Wie entfernt man am besten doppelte Zeilen aus einer ziemlich großen SQL Server
Tabelle (d.h. 300.000+ Zeilen)?
Die Zeilen werden natürlich keine perfekten Duplikate sein, da es die RowID
Identitätsfeld.
MyTable
RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null
15 Stimmen
Kleiner Tipp für PostgreSQL-Benutzer, die dies lesen (viele, wenn man bedenkt, wie oft es verlinkt wird): Pg stellt CTE-Terme nicht als aktualisierbare Views zur Verfügung, so dass Sie nicht
DELETE FROM
ein CTE-Begriff direkt. Siehe stackoverflow.com/q/18439054/3986700 Stimmen
@CraigRinger das gleiche gilt für Sybase - Die übrigen Lösungen habe ich hier zusammengestellt (sollten auch für PG und andere gelten): stackoverflow.com/q/19544489/1855801 (ersetzen Sie einfach die
ROWID()
Funktion durch die Spalte RowID, falls vorhanden)14 Stimmen
Ich möchte hier nur einen Vorbehalt anbringen. Wenn Sie einen Deduplizierungsprozess durchführen, überprüfen Sie immer zuerst, was Sie löschen! Dies ist einer der Bereiche, in denen es sehr häufig vorkommt, dass versehentlich gute Daten gelöscht werden.