[英]Selecting two rows in a table which have the same data for a particular column
表(契約)中有一列稱為服務位置。 我必須顯示服務位置與表中任何其他行匹配的所有行。
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
但它並沒有產生我真正需要的東西。
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
SELECT * FROM sheet1
WHERE C
IN(
SELECT C
FROM sheet1
GROUP BY C
HAVING COUNT( C
)> 1)ORDER BY C
LIMIT 0,5000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.