我正在使用SQL Server 2005。 / L8 e$ k; T& K& `& C" ~我有一张这样的桌子-0 O# E( V$ n5 F! I6 B# [* f6 Y
ID Name a a a二 b二 b3 c4 d4 d在这里,我想删除所有重复的项目,只保留一个例子作为例子-- }9 E5 ^- F0 D- I) Z
ID Name a2 b3 c4 d我可以很容易地将另一个标志列添加到这个表中并拥有唯一的数字,然后删除重复的记录。然而,我想知道是否可以删除重复的记录 而无需 在该表中# K+ j$ Z, B d F8 }5 f% a: | 添加额外列 。 , x" y8 M# P. v7 Q3 m+ q) q& N另外,如果只能使用查询句来完成此操作。不要使用存储过程或临时表。9 X# }# k/ T* n3 O1 r9 y
~ l/ K: k; |6 j. Z解决方案: ' W7 j" a2 u, }3 ^/ |" `3 U) W l1 ^2 n
在CTE中使用ROW_NUMBER在保留唯一行的同时,可以删除重复值。8 S( v1 |, t! ~/ S
WITH q AS ( SELECT RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID ID Name FROM ATable)DELETE FROM q WHERE RN >