查找多个列独有ID列的重复项

Tim*_*ter 4 sql t-sql sql-server sql-server-2005 duplicates

我已经找到了很多关于如何找到重复项的答案,包括PK列或没有关注它,因为:

如果您有一个名为T1的表,并且列是c1,c2和c3,则此查询将显示重复值.

SELECT C1, C2, C3, count(*)as DupCount
 from T1
 GROUP BY C1, C2, C3
 HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

但更常见的要求是获得具有相等c1,c2,c3值的所有重复项的ID.

所以我需要关注什么不起作用,因为必须聚合id:

SELECT ID
 from T1
 GROUP BY C1, C2, C3
 HAVING COUNT(*) <> 1
Run Code Online (Sandbox Code Playgroud)

(所有重复项的ID必须不同,但列必须相等)

编辑:

谢谢你们.我总是惊讶于人们在Stackoverflow上给出了极好的答案!

Mik*_*son 6

这里有很多版本,但我想我想出了一个新版本.

select *
from @T as T1
where exists (select *
              from @T as T2
              where
                T1.ID <> T2.ID and
                T1.C1 = T2.C1 and
                T1.C2 = T2.C2 and
                T1.C3 = T2.C3)
Run Code Online (Sandbox Code Playgroud)