Posterous theme by Cory Watilo

Filed under: Notiz

Duplikate aus einer PostgreSQL-Datenbank sicher entfernen

Kleine Notiz, auch für mich selbst. Wer aus einer PostgreSQL-Datenbank mal flott alle Duplikate löschen möchte, kann wie folgt vorgehen:

DELETE
FROM    tabellenname
WHERE   feldmituniquekey NOT IN
  (SELECT   MAX(dup.feldmituniquekey)
  FROM      tabellenname As dup
  GROUP BY  dup.doppeltezeile1, dup.doppeltezeile2, dup.doppeltezeile3, dup.doppeltezeile4);

Die Anzahl der GROUP-BY-Felder kann beliebig erweitert werden, um das versehentliche Löschen von teilweise identischen Datensätzen zu verhindern.