Doppelte Einträge in einer MySQL-Tabelle ohne Primary Key entfernen

Ich war neulich mit einer MySQL-Datenbanktabelle konfrontiert, in der viele idente Einträge vorhanden waren, obwohl jede Zeile nur einmal existieren sollte. Die Datensätze mussten also entfernt werden. An sich kein Problem, jedoch: die Tabelle hatte keinen Primary Key. Schön blöd, aber ich sag‘ gleich, die Tabelle stammt nicht von mir. 😉

Was machen wir also mit den Duplikaten? Wir schmeißen sie raus, indem wir einen Unique Key erzeugen.

ALTER IGNORE TABLE `beispieltabelle` ADD UNIQUE `keyname` (`spalte_1`, `spalte_2`, `spalte_3`);

Der Trick dabei ist das Keyword IGNORE, denn ohne diesen Zusatz schreit MySQL wegen der doppelten Einträge um Hilfe („MySQL meldet: #1062 – Duplicate entry ‚1-abc-def‘ for key 1“). Mit diesem Schritt schlägt man zwei Fliegen mit einer Klappe: die Mehrfacheinträge sind verschwunden und man hat einen Unique Key, der doppelte Einträge in Zukunft verhindert.

Falls das für euch zu sehr nach Holzhacker-Methode klingt, könnt ihr gerne Alternativen posten. 😉