Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据不同的主键删除重复的sql条目_Sql_Sql Server_Distinct_Sql Delete - Fatal编程技术网

根据不同的主键删除重复的sql条目

根据不同的主键删除重复的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

这个表有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

因此,我可以看到所有重复条目及其不同的主键,如何从表中删除除主键最低的条目以外的所有条目?

,然后在
ID
帐户名上创建唯一约束,以防止重复条目。
WITH t AS (SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY PK) n FROM MyTable)
DELETE FROM t WHERE n > 1