1
我要編寫一個查詢得到的結果從表T設置找到行的多個列相同使用SQL查詢
其中表T
被定義爲
- 主鍵
- A列
- 塔B
- 塔C
我需要獲取在列As中具有相同值的行,並且在列Cs中也具有相同的值。如何編寫查詢? (使用通用SQL查詢)
我要編寫一個查詢得到的結果從表T設置找到行的多個列相同使用SQL查詢
其中表T
被定義爲
我需要獲取在列As中具有相同值的行,並且在列Cs中也具有相同的值。如何編寫查詢? (使用通用SQL查詢)
要查找的元組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
用途:
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
這將給行的所有夫婦(僅一次與不平等條款)。
如果這太多(有三對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
這兩個答案都很好,但我選擇了這個,因爲它適合我當前項目的需要。 – newguy