Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL:Löschen doppelter Datensätze in SQL Server

Nun, das ist einer der Gründe, warum Sie einen Primärschlüssel auf dem Tisch haben sollten. Welche Version von SQL Server? Für SQL Server 2005 und höher:

;WITH r AS
(
    SELECT col1, col2, col3, -- whatever columns make a "unique" row
    rn = ROW_NUMBER() OVER (PARTITION BY col1, col2, col3 ORDER BY col1)
    FROM dbo.SomeTable
)
DELETE r WHERE rn > 1;

Dann, damit Sie das morgen nicht noch einmal machen müssen, und am nächsten Tag und am Tag danach, deklarieren Sie einen Primärschlüssel für die Tabelle.