sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag ta bort dubbletter av rader?

Om du antar att inga nollvärden saknas, GROUP BY de unika kolumnerna och SELECT MIN (or MAX) RowId som raden att behålla. Ta sedan bara bort allt som inte hade ett rad-ID:

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

Om du har en GUID istället för ett heltal kan du ersätta

MIN(RowId)

med

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


  1. Hur viktig är ordningen på kolumner i index?

  2. Förvandla databasresultat till array

  3. Oracle uttalande

  4. Integrering av SQLCipher med greenDAO