查找具有不同值的重复记录

时间:2016-04-08 16:11:22

标签: mysql group-by

我知道如何查询以根据一个或多个字段查找具有重复记录的记录,例如

Select Customer,Count(*) from Table1 group by Customer,Month having count(*)>1

这将为我提供在给定月份内多次订购的所有客户的列表。

然而,从那个选择我想:

  • 优化组以仅显示产品不同的dupes。我知道如果我想做同样的事情我会在',Product'之前添加到组中,但在我的情况下它是Product != Product而我不确定如何在组中指出

  • 而不是获取客户在给定月份内订购多个产品的列表,而不是所有这些订单的列表。换句话说,而不是该组中的这种类型的列表:

    鲍勃,腊 玛丽,六月

我想回来:

Bob,Widget,December
Bob,Pipes,December
Mary,Books,June
Mary,Cars,June

1 个答案:

答案 0 :(得分:1)

如果产品字段在同一个表中,那么您可以在产品字段中使用count with distinct来获取不同产品的数量:

Select Customer, Month, Count(distinct product)
from Table1
group by Customer, Month
having count(distinct product)>1

如果您想知道他们订购的内容,请将其作为子查询加入主表:

select distinct t1.customer, t1.month, t1.product from table1 t1
inner join
    (Select Customer, Month, Count(distinct product)
     from Table1
     group by Customer, Month
     having count(distinct product)>1
    ) t2 on t1.customer=t2.customer and t1.month=t2.month

外部选择中的独特性取决于您的确切需求。