nullがないと仮定すると、GROUP BY
一意の列、およびSELECT
MIN (or MAX)
保持する行としてのRowId。次に、行IDを持たないものをすべて削除します:
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
整数ではなくGUIDがある場合は、置き換えることができます
MIN(RowId)
と
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))