MySQL DISTINCT 的疑问

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,487评论 0 13
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,248评论 0 7
  • 一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件...
    shadow雨轩阅读 521评论 0 3
  • 文:莠子 野心和雄心,其实就是一种东西,自己称之为雄心,而他人则称之为野心了。 在左冷禅看来,人生一世,草木一秋,...
    莠子阅读 501评论 0 2
  • 无法自立,没有理由,因为爱你, 曾经是我,现在是你,无问东西, 燕雀鸿鹄,各有所志,随你如愿, 我曾一度幻想着浪漫...
    似风年阅读 446评论 5 10