美文网首页高性能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