使用LEFT JOIN
-- 方案1 先去重,再联结,符合正常思路
SELECT * FROM
(SELECT DISTINCT 用户ID FROM 用户购买20110901) A
LEFT JOIN
(SELECT DISTINCT 用户ID FROM 用户购买20110902) B
ON A.用户ID = B.用户ID;
-- 方案2 先联结 再去重,疑问点在于 只能再SELECT添加一个DISTINCT函数
SELECT DISTINCT A.用户ID,B.用户ID
FROM 用户购买20110901 AS A LEFT JOIN 用户购买20110902 AS B
ON A.用户ID = B.用户ID;
两则得出的结果是一样的,但是方案一 更符合正常的思路。
使用RIGHT JOIN
-- 方案1 先去重,再联结,符合正常思路
SELECT * FROM
(SELECT DISTINCT 用户ID FROM 用户购买20110901) A
RIGHT JOIN
(SELECT DISTINCT 用户ID FROM 用户购买20110902) B
ON A.用户ID = B.用户ID;
-- 方案2 先联结 再去重,疑问点在于 只能再SELECT添加一个DISTINCT函数
SELECT DISTINCT A.用户ID,B.用户ID
FROM 用户购买20110901 AS A RIGHT JOIN 用户购买20110902 AS B
ON A.用户ID = B.用户ID;
两则得出的结果是一样的,但是方案一 更符合正常的思路。
使用INNER JOIN
-- 方案1 先去重,再联结,符合正常思路
SELECT * FROM
(SELECT DISTINCT 用户ID FROM 用户购买20110901) A
INNER JOIN
(SELECT DISTINCT 用户ID FROM 用户购买20110902) B
ON A.用户ID = B.用户ID;
-- 方案2 先联结 再去重,疑问点在于 只能再SELECT添加一个DISTINCT函数
SELECT DISTINCT A.用户ID,B.用户ID
FROM 用户购买20110901 AS A INNER JOIN 用户购买20110902 AS B
ON A.用户ID = B.用户ID;
两则得出的结果是一样的,但是方案一 更符合正常的思路。
网友评论