我的这个表有3列:ID,帐户名和主键。某些条目已被复制,其中ID和帐户名称相同但PK(它是主键)已递增。
我希望能够删除PK(主键)最低的所有重复条目除外。
以下是我编写的用于检索此数据的查询结果的示例:
ID Account Name PK
18380 _srvSQL 1724
18380 _srvSQL 8454
18380 _srvSQL 10333
18380 _srvSQL 9903
18380 _srvSQL 10274
20993 _svc_MOSS_search 2595
20993 _svc_MOSS_search 9235
21020 _svc_MOSS_WSS 2589
21020 _svc_MOSS_WSS 9244
22251 _SVC_QA_SP_PortalAP 3659
22251 _SVC_QA_SP_PortalAP 9590
22681 _Svc_SQL_AS_Prod 4269
22681 _Svc_SQL_AS_Prod 9678
20136 _svcBIAdmin 1628
20136 _svcBIAdmin 11080
20136 _svcBIAdmin 8913
18456 _svcBizTalk 9923
18456 _svcBizTalk 10294
18456 _svcBizTalk 10353
因此,我可以看到所有重复的条目及其不同的主键,如何从表中删除除主键最低的所有条目之外的所有条目?
答案 0 :(得分:3)
WITH t AS (SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY PK) n FROM MyTable)
DELETE FROM t WHERE n > 1