sql >> Database >  >> RDS >> Mysql

MySql:tabelrijen verwijderen afhankelijk van dubbele kolomwaarden?

Ik denk dat je gewoon kunt proberen een UNIEKE INDEX toe te voegen met IGNORE:

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

MySQL zou moeten reageren met zoiets als:

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

Natuurlijk laat je het aan MySQL over om te beslissen welke rijen je wilt laten vallen.

BEWERKEN:

dit werkt voor zoveel kolommen als u wilt:

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

bekijk de MySQL-documentatie op CREATE INDEX . Een veelvoorkomend probleem (tenminste één die ik ooit ben tegengekomen) is om te vergeten dat NULL = NULL is niet waar (maar NULL ), dus {42, NULL} en {42, NULL} zijn toegestaan ​​voor een UNIEKE index op twee kolommen.



  1. INSERT rijen in meerdere tabellen in een enkele query, selecteren uit een betrokken tabel

  2. Oracle, maak datum tijd de eerste dag van de maand

  3. Single is gelijk aan in MYSQL

  4. Moeten we sorteerkolom, primaire sleutel op samengestelde index (MySQL) opnemen