删除大于 1 的重复行

Delete duplicate rows for greater then 1

我有一个查找重复项的脚本。我想知道现在如何删除那些重复项。

Select LastName, FirstName, DateOfBirth, Count (*) As Duplicates
From PatientDemographics2
Group by FirstName, LastName, DateOfBirth
Having count (*) >1
Order by LastName, FirstName Asc

您可以ROW_NUMBER()检测重复项

WITH cte AS (
    SELECT LastName, FirstName, DateOfBirth
        , ROW_NUMBER() OVER(PARTITION BY LastName, FirstName, DateOfBirth ORDER BY LastName) AS rn
    FROM PatientDemographic2
)
DELETE FROM cte 
WHERE rn > 1

或者简单地说:

DELETE FROM PatientDemographics2 WHERE id NOT IN (
 SELECT MIN(id) i1 FROM PatientDemographics2
 GROUP BY FirstName, LastName, DateOfBirth
)

演示:https://rextester.com/KOZI16883