2013-05-09 55 views
2

我正在對數據庫進行一些手動重複檢查,並且有複雜的情況。使用多個值進行重複檢查

我需要根據列A中的值檢查重複的行,我已經這樣做了。然而,在這種特定的情況下,有可能是對A列中的值相同,但爲列不同值的多個記錄E.

這是我原來的查詢:

SELECT ColumnA, COUNT(*) TotalCount 
FROM TableA 
INNER JOIN TableA_1 on fID = hID 
WHERE dateCreated > '2013-05-08 00:00:00' 
GROUP BY ColumnA 
HAVING COUNT(*) > 1 
ORDER BY COUNT(*) DESC 

我現在需要篩選ColumnE不同或獨一無二的ColumnA列出重複項。我已經添加psuedocode到我原來的查詢

SELECT ColumnA, COUNT(*) TotalCount 
FROM TableA 
INNER JOIN TableA_1 on fID = hID 
WHERE dateCreated > '2013-05-08 00:00:00' 
AND ColumnE is not unique 
GROUP BY ColumnA 
HAVING COUNT(*) > 1 
ORDER BY COUNT(*) DESC 

我希望這是有道理的。

+1

燦」你是否也只是按專欄分組? – sambomartin 2013-05-09 19:25:47

+0

術語「不同的,或獨特的」不清楚。不同於什麼?以什麼方式獨特? – 2013-05-09 19:25:48

+0

獨一無二,ColumnA是另一個標識符。我基於此過濾重複項,所以如果第1行:ColumnA = 10,我只希望該記錄出現在Row n:ColumnA也等於10.但是,如果第1行:ColumnA = 10並且第1行:列E =藍色,行n:列A = 10和行n:列A =紅色。由於ColumnA是相同的,但列E仍然是唯一的,我想過濾掉。 – Phoenix 2013-05-09 19:29:00

回答

1

你需要一個GROUP BY子句對ColumnA柱和HAVING子句DISTINCT ColumnE

SELECT ColumnA, COUNT(*) TotalCount 
FROM TableA INNER JOIN TableA_1 on fID = hID 
WHERE dateCreated > '2013-05-08 00:00:00' 
GROUP BY ColumnA 
HAVING COUNT(DISTINCT ColumnE) > 1 
ORDER BY COUNT(*) DESC 
+0

就是這樣。非常感謝! – Phoenix 2013-05-09 19:57:09

+0

不客氣;)... – 2013-05-09 20:02:55

1

您可以只添加ColumnE到分組,如下圖所示:

SELECT ColumnA, ColumnE, COUNT(*) TotalCount 
    FROM TableA 
    INNER JOIN TableA_1 on fID = hID 
    WHERE dateCreated > '2013-05-08 00:00:00' 
    GROUP BY ColumnA, ColumnE 
    HAVING COUNT(*) > 1 
    ORDER BY COUNT(*) DESC 
+0

這是令我擔心的唯一原因是因爲運行這個只有5個整體重複,在一個超過500,000記錄的表中。也許我沒有給自己足夠的信用... – Phoenix 2013-05-09 19:30:00