Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso rimuovere le righe duplicate?

Supponendo che non ci siano valori nulli, GROUP BY le colonne univoche e SELECT il MIN (or MAX) RowId come riga da mantenere. Quindi, elimina tutto ciò che non aveva un ID riga:

DELETE FROM MyTable
LEFT OUTER JOIN (
   SELECT MIN(RowId) as RowId, Col1, Col2, Col3 
   FROM MyTable 
   GROUP BY Col1, Col2, Col3
) as KeepRows ON
   MyTable.RowId = KeepRows.RowId
WHERE
   KeepRows.RowId IS NULL

Nel caso in cui tu abbia un GUID invece di un numero intero, puoi sostituirlo

MIN(RowId)

con

CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))