Ervan uitgaande dat er geen nulls zijn, GROUP BY
de unieke kolommen, en SELECT
de MIN (or MAX)
RowId als de rij die moet worden bewaard. Verwijder vervolgens alles dat geen rij-ID had:
DELETE FROM MyTable
LEFT OUTER JOIN (
SELECT MIN(RowId) as RowId, Col1, Col2, Col3
FROM MyTable
GROUP BY Col1, Col2, Col3
) as KeepRows ON
MyTable.RowId = KeepRows.RowId
WHERE
KeepRows.RowId IS NULL
Als je een GUID hebt in plaats van een geheel getal, kun je
. vervangenMIN(RowId)
met
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))