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

Hvordan kan jeg fjerne dublerede rækker?

Forudsat ingen nuller, GRUPPER EFTER de unikke kolonner og SELECT MIN (eller MAX) RowId som rækken, der skal beholdes. Derefter skal du bare slette alt, der ikke havde et række-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

Hvis du har en GUID i stedet for et heltal, kan du erstatte

MIN(RowId)

med

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


  1. CURDATE() Eksempler – MySQL

  2. Sådan sikkerhedskopieres og gendanner du en PostgreSQL-database

  3. Brug psql's \copy til en forespørgsel med flere linjer

  4. PDO-understøttelse af flere forespørgsler (PDO_MYSQL, PDO_MYSQLND)