mit SQL Server würden Sie so etwas wie dieses
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
Die OUTPUT Anweisung zeigt die Datensätze verwenden, die gelöscht.
Update:
Above Abfrage Duplikate löschen und geben Sie die Zeilen, die gelöscht werden, nicht die Zeilen, die bleiben. Wenn das für Sie wichtig ist (die restlichen 50 Zeilen sollten identisch mit den 50 gelöschten Zeilen sein), könnten Sie die Syntax SQL Server's 2008 MERGE verwenden, um dies zu erreichen.
Warum würden Sie wollen/müssen, dies zu tun? –
Es hängt wahrscheinlich von der Datenbank-Engine ab, aber mit SQL Server ist es definitiv möglich. –
Oracle, Microsoft SQL Server, MySQL oder andere? Bitte geben Sie – kurast