删除SQL Server中的重复记录
我正在使用以下代码删除具有重复人员ID的记录。我可能只是忽略了什么删除SQL Server中的重复记录,sql,sql-server,Sql,Sql Server,我正在使用以下代码删除具有重复人员ID的记录。我可能只是忽略了什么 DELETE p1 FROM AR_Personnel p1 INNER JOIN AR_Personnel p2 WHERE p1.personnel_ID = p2.personnel_ID; 您可以尝试这样的方法—速度非常快(假设列i1是DUP): 这使用CTE,可能是当前最流行的删除DUP的模式。另一个选项是使用group by收集所有DUP select * -- delete -- ALWAYS test fi
DELETE p1
FROM AR_Personnel p1
INNER JOIN AR_Personnel p2
WHERE p1.personnel_ID = p2.personnel_ID;
您可以尝试这样的方法—速度非常快(假设列i1是DUP):
这使用CTE,可能是当前最流行的删除DUP的模式。另一个选项是使用group by收集所有DUP
select *
-- delete -- ALWAYS test first !!
from AR_Personnel
where AR_Personnel.PrimaryKeyField not in
( select min(p.PrimaryKeyField)
from AR_Personnel p
group by p.personnel_ID
)
但使用CTE可能更快获取复制ID的前1个,并将它们插入temp表格变量。然后删除所有重复项并将临时表条目插入主表。您的代码删除了“我的测试”中的所有值。应首先使用一个小数据集测试任何删除代码,并将删除替换为“选择”。
select *
-- delete -- ALWAYS test first !!
from AR_Personnel
where AR_Personnel.PrimaryKeyField not in
( select min(p.PrimaryKeyField)
from AR_Personnel p
group by p.personnel_ID
)