美文网首页高性能MySQL
MySQL DISTINCT 的疑问

MySQL DISTINCT 的疑问

作者: Sam_6155 | 来源:发表于2019-07-26 11:03 被阅读1次

使用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;
两则得出的结果是一样的,但是方案一 更符合正常的思路。

相关文章

网友评论

    本文标题:MySQL DISTINCT 的疑问

    本文链接:https://www.haomeiwen.com/subject/shrrrctx.html