根据不同的主键删除重复的sql条目
这个表有3列:ID、帐户名和主键。在ID和帐户名相同但PK(主键)已递增的情况下,某些条目已重复 我想能够删除所有重复条目,除了PK最低的条目(主键) 下面是我编写的一个查询结果示例,该查询仅用于检索此数据:根据不同的主键删除重复的sql条目,sql,sql-server,distinct,sql-delete,Sql,Sql Server,Distinct,Sql Delete,这个表有3列:ID、帐户名和主键。在ID和帐户名相同但PK(主键)已递增的情况下,某些条目已重复 我想能够删除所有重复条目,除了PK最低的条目(主键) 下面是我编写的一个查询结果示例,该查询仅用于检索此数据: ID Account Name PK 18380 _srvSQL 1724 18380 _srvSQL 8454 18380 _srvSQL
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
因此,我可以看到所有重复条目及其不同的主键,如何从表中删除除主键最低的条目以外的所有条目?,然后在
ID
和帐户名上创建唯一约束,以防止重复条目。
WITH t AS (SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY PK) n FROM MyTable)
DELETE FROM t WHERE n > 1