【问题标题】:Mysql - Find duplicates records evaluating 2 columnsMysql - 查找重复记录评估 2 列
【发布时间】:2013-05-09 19:35:32
【问题描述】:

我有一个 mysql 表,其结构如下: order_id - customer_name - customer_email_address

我需要进行查询以搜索具有相同 customer_name 或相同 customer_email 的记录,并显示按 order_id 组排序的结果(降序)。

例子:

Mysql 表

order_id    customer_name    customer_email_address
1           pippo            pippo@pippo.com
2           pippo            pippo2@pippo2.com
3           pluto            pluto@pluto.com
4           caio             pippo@pippo.com
5           pippo4           pippo4@pippo4.com
6           pluto            pluto22@pluto22.com

结果

6           pluto            pluto22@pluto22.com
3           pluto            pluto@pluto.com
4           caio             pippo@pippo.com     
1           pippo            pippo@pippo.com
2           pippo            pippo2@pippo2.com

结果 6 和 3 共享相同的 customer_name 结果 4 和 1 共享相同的 customer_email_address 结果 1 和 2 共享相同的 customer_name

Order_id 5 不在结果中,因为它没有重复项。

【问题讨论】:

  • 您的意思是“按 order_id 组排序的结果(降序)”。我不明白你的结果的顺序,为什么 3 不是第一和 6 不是第二
  • @Pottillo 我已经更新了查询,因为我第一次误解了要求
  • @Justin 因为我需要从最大到最小订单号的结果。所以:给定一些“重复组”,首先出现的应该是具有较高序号的顺序,然后是所有相关的重复......等等。

标签: mysql duplicates


【解决方案1】:

试试这个:

SELECT
    order_id,
    customer_name,
    customer_email_address
FROM 
    my_table
WHERE 
    order_id IN (
        SELECT
            order_id
        FROM
            my_table
        GROUP BY
            customer_name
        HAVING 
            COUNT(*)>1

        UNION

        SELECT
            order_id,
        FROM
            my_table
        GROUP BY
            customer_email_address
        HAVING 
            COUNT(*)>1
    )
ORDER BY 
    customer_name,
    customer_email_address,
    order_id DESC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2010-10-25
    • 1970-01-01
    • 2018-10-31
    • 2020-07-06
    • 2019-03-28
    相关资源
    最近更新 更多