我正在使用SQL Server 2005。 9 S/ `& c8 g$ K0 T我有一张这样的桌子-! d8 O8 J6 [# `! e0 x- F7 N/ ], z
ID Name a a a二 b二 b3 c4 d4 d在这里,我想删除所有重复的项目,只保留一个例子作为例子-4 F+ n( v6 e9 h8 [
ID Name a2 b3 c4 d我可以很容易地将另一个标志列添加到这个表中并拥有唯一的数字,然后删除重复的记录。然而,我想知道是否可以删除重复的记录 而无需 在该表中 2 Q8 F- D L- L4 k( ?1 Y添加额外列 。 `1 j4 z* L& [& m( z, L g$ z
另外,如果只能使用查询句来完成此操作。不要使用存储过程或临时表。7 w1 K6 K, R' B$ V" ]3 H3 x
/ b- d. |) R- F4 x7 z' Q- c 解决方案: % J6 {8 H5 E) {" x' E( R3 q5 h: s
在CTE中使用ROW_NUMBER在保留唯一行的同时,可以删除重复值。; Q7 s8 ]3 Q# w; D
WITH q AS ( SELECT RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID ID Name FROM ATable)DELETE FROM q WHERE RN >