删除SQL Server中的重复记录

时间:2019-03-01 15:14:52

标签: sql sql-server

我正在使用以下代码删除具有重复的person_ID的记录。我可能只是忽略了一些东西。

DELETE p1 
FROM AR_Personnel p1
INNER JOIN AR_Personnel p2 
WHERE p1.personnel_ID = p2.personnel_ID;

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的操作-非常快(假设第i1列是假的):

 ; with f1 as (select i1 , row_number() over (partition by i1 order by i1 )  rn from t21)
    delete from f1 where rn > 1

这使用CTE,可能是当前最流行的删除公仔的模式。

答案 1 :(得分:0)

另一种选择是使用分组依据来收集所有公仔

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可能更快