con SQL Server que usaría algo como esto
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
La declaración OUTPUT muestra los registros que se eliminan.
Actualización:
Por encima de consulta será eliminar duplicados y le dará las filas que se eliminan, no las filas que quedan. Si eso es importante para usted (en general, las 50 filas restantes deben ser idénticas a las 50 filas eliminadas), puede usar la sintaxis SQL Server's 2008 MERGE para lograr esto.
¿Por qué quieres/necesidad de hacer esto? –
Probablemente dependa del motor de base de datos pero con SQL Server es definitivamente posible. –
Oracle, Microsoft SQL server, mysql u otro? por favor especifique – kurast