如何编写一个由商家组织的查询然后找到重复的?

问题描述 投票:-1回答:1

我正在寻找重复的客户,并希望由商家展示。我知道这需要自我加入,但无法正确使用语法。

此查询显示具有重复项的项目。

Select MerchId, CustId, Count(CustId) 
from Customers
Group by MerchId, CustId
Having Count(CustId)> 1

此查询向我显示特定商家的所有重复项。

SELECT  c.MerchId, c.CustId 
FROM Customers c
WHERE CustId IN 
(SELECT c.CustId FROM Customers AS c
WHERE c.MerchId = @mid 
group by c.CustId having count(1) > 1)
and c.MerchId = @mid
order by CustId

但我想看到的信息显示为:

MerchId, CustId, Address, Phone     
1        01     
1        01     
1        02     
1        02     
1        03     
1        03     
2        01     
2        01     
2        02     
2        02     

假设有n个客户的n个商家。提前致谢

sql database self-join
1个回答
0
投票

您可以将查询加入到表中:

select c.merchid, c.custid, c.address, c.phone 
from customers c inner join (
  select merchid, custid 
  from customers
  group by merchId, custId
  having count(custid)> 1
) g on g.merchid = c.merchid and g.custid = c.custid

或者通过明确计算每一行(效率较低但更容易阅读):

select c.merchid, c.custid, c.address, c.phone 
from customers c
where (
  select count(*) from customers
  where merchid = c.merchid and custid = c.custid
) > 1
© www.soinside.com 2019 - 2024. All rights reserved.