Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql:Tabellenzeilen abhängig von doppelten Spaltenwerten entfernen?

Ich denke, Sie könnten einfach versuchen, einen UNIQUE INDEX mit IGNORE:

hinzuzufügen
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);

MySQL sollte mit etwas wie:

antworten
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0

Natürlich überlassen Sie es MySQL, zu entscheiden, welche Zeilen gelöscht werden sollen.

BEARBEITEN:

das funktioniert für beliebig viele Spalten:

ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);

Überprüfen Sie die MySQL-Dokumentation unter CREATE INDEX . Ein häufiger Fallstrick (mindestens einer, dem ich einmal begegnet bin) ist, dass NULL = NULL vergessen wird ist nicht wahr (aber NULL ), daher sind {42, NULL} und {42, NULL} für einen UNIQUE-Index für zwei Spalten zulässig.