Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak mogę usunąć zduplikowane wiersze?

Zakładając brak wartości null, GROUP BY unikalne kolumny i SELECT MIN (or MAX) RowId jako wiersz do zachowania. Następnie po prostu usuń wszystko, co nie miało identyfikatora wiersza:

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

Jeśli masz identyfikator GUID zamiast liczby całkowitej, możesz zastąpić

MIN(RowId)

z

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 najlepszych narzędzi do modelowania danych dla SQL Server

  2. Bazy danych systemu SQL Server — przywracanie systemowych baz danych

  3. Dodaj konto pocztowe bazy danych do profilu (SSMS)

  4. Jaki jest najszybszy sposób zbiorczego wstawiania dużej ilości danych w programie SQL Server (klient C#)

  5. Jak zwrócić tylko Date z typu danych DateTime serwera SQL?