z SQL Server należy użyć coś jak ten
DECLARE @Table TABLE (ID INTEGER, PossibleDuplicate INTEGER)
INSERT INTO @Table VALUES (1, 100)
INSERT INTO @Table VALUES (2, 100)
INSERT INTO @Table VALUES (3, 200)
INSERT INTO @Table VALUES (4, 200)
DELETE FROM @Table
OUTPUT Deleted.*
FROM @Table t
INNER JOIN (
SELECT ID = MAX(ID)
FROM @Table
GROUP BY PossibleDuplicate
HAVING COUNT(*) > 1
) d ON d.ID = t.ID
rachunku OUTPUT pokazuje rekordy zostaną usunięte.
Aktualizacja:
Przede zapytania usunie duplikaty i daje wiersze, które zostały usunięte, a nie wiersze, które pozostają. Jeśli to jest dla ciebie ważne (w sumie pozostałe 50 wierszy powinno być identyczne z 50 usuniętymi wierszami), możesz użyć składni SQL Server's 2008 MERGE, aby to osiągnąć.
Dlaczego chcesz/trzeba to zrobić? –
Prawdopodobnie zależy to od silnika bazy danych, ale z SQL Server jest to zdecydowanie możliwe. –
Oracle, serwer Microsoft SQL, mysql lub inny? proszę podać – kurast