表(合约)中有一列称为服务位置。我必须显示服务位置与表中任何其他行匹配的所有行。
Table Example
A B C
1 2 3
3 2 1
2 5 3
我需要一个查询,其中第一行和第二行将根据第二列的比较返回。我假设我需要使用HAVING COUNT(B
)> 1
我想出了这个
SELECT `contract_number`
FROM `contracts`
WHERE `import_id` = 'fe508764-54a9-41f7-b36e-50ebfd95971b'
GROUP BY `service_location_id`
HAVING COUNT(`service_location_id` ) >1
但它不会产生我真正需要的东西。
答案 0 :(得分:2)
Having
会这样做,但你需要像这样使用它
SELECT *
FROM Contracts
INNER JOIN
( SELECT B
FROM Contracts
GROUP BY B
HAVING COUNT(*) > 1 -- MORE THAN ONE ROW WITH THE SAME VALUE
) dupe
ON dupe.B = Contracts.B
根据您的索引编制,您可能会发现自联接表现更好:
SELECT DISTINCT t1.*
FROM contracts t1
INNER JOIN contract` t2
ON t1.B = t2.B
AND t1.A <> t2.A
答案 1 :(得分:1)
SELECT *
来自sheet1
在哪里C
IN(
SELECT C
来自sheet1
GROUP BY C
有COUNT(C
)&gt; 1
)
ORDER BY C
限制0,5000