Unter der Annahme, dass keine Nullen vorhanden sind, GROUP BY
die eindeutigen Spalten und SELECT
das MIN (or MAX)
RowId als die zu behaltende Zeile. Löschen Sie dann einfach alles, was keine Zeilen-ID hatte:
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
Falls Sie anstelle einer Ganzzahl eine GUID haben, können Sie
ersetzenMIN(RowId)
mit
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))