Za předpokladu, že nejsou žádné hodnoty null, GROUP BY jedinečné sloupce a SELECT MIN (or MAX) RowId jako řádek, který se má zachovat. Poté smažte vše, co nemělo ID řádku:
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
V případě, že máte GUID místo celého čísla, můžete nahradit
MIN(RowId)
s
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))