[英]find rows that multiple columns are identical using SQL query
我必須編寫查詢以從表T中獲取結果集
其中表T
定義為
我需要獲取在As列中具有相同值並且在Cs列中也具有相同值的行。 如何編寫查詢? (使用通用SQL查詢)
采用:
SELECT a.PrimaryKey, b.PrimaryKey
FROM T a
INNER JOIN T b
ON a.columnA = b.columnA
AND a.columnC = b.columnC
AND a.PrimaryKey < b.PrimaryKey
這將給出所有兩行(僅一次使用inequality子句)。
如果太多(具有三對A–B,A–C,B–C),則也可以使用標准SQL將左鍵限制為該組的最小鍵的情況(然后,您將僅獲得A–B和A–C):
SELECT a.PrimaryKey, b.PrimaryKey
FROM T a
INNER JOIN T b
ON b.columnA = a.columnA
AND b.columnC = a.columnC
LEFT JOIN T c
ON c.columnA = a.columnA
AND c.columnC = a.columnC
AND c.PrimaryKey < a.PrimaryKey
WHERE a.PrimaryKey < b.PrimaryKey
AND c.PrimaryKey IS NULL
要查找表中重復的元組A,C,可以使用
SELECT A, C, count(*)
FROM T
GROUP BY A, C
HAVING count(*) >=2
現在,您可以從表T中選擇在此“重復項”集中具有A,C的所有行。
Select PrimaryKey, A, B, C
FROM T JOIN
(SELECT A, C, count(*)
FROM T
GROUP BY A, C
HAVING count(*) >=2
) dupl
on T.A = dupl.A and T.C = dupl.C
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.