sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu odstranit duplicitní řádky?

Za předpokladu, že nejsou žádné hodnoty null, GROUP BY jedinečné sloupce a SELECT MIN (or MAX) RowId jako řádek, který se má zachovat. Poté smažte vše, co nemělo ID řádku:

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

V případě, že máte GUID místo celého čísla, můžete nahradit

MIN(RowId)

s

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


  1. Jak vytvořit balíček v Oracle SQL Developer?

  2. Vytvořte sloupec automatického zvýšení v SQLite

  3. Jak odebrat časovou část hodnoty datetime (SQL Server)?

  4. Přejmenujte omezení CHECK v SQL Server pomocí T-SQL