删除大于 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
)
我有一个查找重复项的脚本。我想知道现在如何删除那些重复项。
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
)