con SQL Server si può usare qualcosa di simile
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
Il OUTPUT dichiarazione mostra i record che vengono eliminati.
Aggiornamento:
Sopra query eliminare i duplicati e vi consegnerà le righe che vengono eliminati, non le righe che rimangono. Se questo è importante per te (tutto sommato, le restanti 50 righe dovrebbero essere identiche alle 50 righe eliminate), potresti usare la sintassi SQL Server's 2008 MERGE per raggiungere questo obiettivo.
fonte
2010-01-28 08:16:08
perché si vuole/bisogno di fare questo? –
Probabilmente dipende dal motore del database ma con SQL Server è definitivamente possibile. –
Oracle, server Microsoft SQL, mysql o altro? si prega di specificare – kurast