我正在使用SQL Server 2005。" H* v) L9 w. O/ R" R" n. J
我有一张这样的桌子-) p1 ]. { A! a
ID Name a a a二 b二 b3 c4 d4 d在这里,我想删除所有重复的项目,只保留一个例子作为例子- " u! u# ^& I; U% L" j% T) t. `ID Name a2 b3 c4 d我可以很容易地将另一个标志列添加到这个表中并拥有唯一的数字,然后删除重复的记录。然而,我想知道是否可以删除重复的记录 而无需 在该表中3 l% x+ w5 i B2 Q" O 添加额外列 。+ P6 N2 J& ]# z1 X2 H- e
另外,如果只能使用查询句来完成此操作。不要使用存储过程或临时表。 1 {9 X* A+ q- m, Y! o5 U' ]" n$ Z, A% Q ! h4 u2 a* ~1 ~9 c1 { 解决方案: & D+ @' w- @( `( m* ? u( ?, G
在CTE中使用ROW_NUMBER在保留唯一行的同时,可以删除重复值。 / V+ o& ~. ]" U# a Q6 _! mWITH q AS ( SELECT RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID ID Name FROM ATable)DELETE FROM q WHERE RN >