Giả sử không có giá trị nào, bạn GROUP BY
các cột duy nhất và SELECT
MIN (or MAX)
RowId làm hàng cần giữ. Sau đó, chỉ cần xóa mọi thứ không có id hàng:
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
Trong trường hợp bạn có GUID thay vì số nguyên, bạn có thể thay thế
MIN(RowId)
với
CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))