sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik dubbele rijen verwijderen?

Ervan uitgaande dat er geen nulls zijn, GROUP BY de unieke kolommen, en SELECT de MIN (or MAX) RowId als de rij die moet worden bewaard. Verwijder vervolgens alles dat geen rij-ID had:

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

Als je een GUID hebt in plaats van een geheel getal, kun je

. vervangen
MIN(RowId)

met

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


  1. Fout:pg_config uitvoerbaar bestand niet gevonden bij het installeren van psycopg2 op Alpine in Docker

  2. Inloggen met externe services

  3. verschil tussen localhost en postgres voor host in docker

  4. Initiële array in functie om multidimensionale array te aggregeren