2014-06-19 52 views
0

我正在使用csharp的t-sql查詢數據庫表,其中包含5列 整數,它跟蹤 程序中發生某些操作的次數。表中還有其他列。多列重複查詢

例子:

Num1 Num2 Num3 Num4 Num5 

1  15 22  23 32 
15 4  21  17 19 
6  5  15  18 20 

我需要構建一個返回整數的每一個複製組和所有行的 計數,所有這5列,當爲一組值的考慮,已經查詢複製。爲了進一步闡明,如果確實發生,我需要知道Num1 = 6,Num2 = 5,Num3 = 15,Num4 = 18和Num5 = 20多少次。我還需要知道這五列中是否出現其他重複副本。

我知道一些SQL,但這是一個複雜的查詢,我需要幫助。我試過 許多子查詢等,但我只是無法弄清 SELECT和ORDER BY的正確組合,使其工作。該數據表中有大約7000 記錄,預計增長不會超過10K,因此性能是次要的。

感謝提前。

回答

0

你可以用一個加入一個子查詢,這隻需複製並計數

select a.Col1, a.Col2, a.Col3, a.Num1, a.Num2, a.Num3, a.Num4, a.Num5, t.cnt as numberOfDuplicates 
from tableA a 
join (select Num1, Num2, Num3, Num4, Num5, count(*) as cnt 
     from tableA 
     group by Num1, Num2, Num3, Num4, Num5 
     having count(*) > 1 
    ) t 
    on a.Num1 = t.Num1 and a.Num2 = t.Num2 and a.Num3 = t.Num3 and a.Num4 = t.Num4 and a.Num5 = t.Num5 
+0

現在好了這看起來像是我從未想過的事情。謝謝,我會去研究Having關鍵字。 –

1

這看起來像是一個簡單的SELECT COUNT,在5列上有一個GROUP BY。

東西線沿線的:

SELECT Num1, Num2, Num3, Num4, Num5, COUNT(someColumn) GROUP BY Num1, Num2, Num3, Num4, Num5 
+0

對不起,我不明白你的答案做到這一點。我根據您的評論嘗試了以下內容:'SELECT Num1,Num2,Num3,Num4,Num5 FROM [TableName] GROUP BY Num1,Num2,Num3,Num4,Num5'但這似乎返回所有不重複的行。當我將COUNT子句放入時,我也收到了一個錯誤。我不明白你的意思(somecolumn)。你能解釋一下嗎? –

+0

在'someColumn'中,你應該輸入表格中某列的名字。 (你確實提到它有其他列,但即使它沒有,我認爲任何Num列也會起作用。) –

+0

我剛剛嘗試過。如上所述,當我在查詢中離開COUNT子句時,我收到一個錯誤,指出無效對象名稱'COUNT'。 –