sql >> Database teknologi >  >> RDS >> Mysql

MySql:fjern tabelrækker afhængigt af kolonneduplikerede værdier?

Jeg tror, ​​at du bare kan prøve at tilføje et UNIKT INDEX ved at bruge IGNORE:

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

MySQL burde svare med noget som:

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

Selvfølgelig vil du lade det være op til MySQL at bestemme, hvilke rækker der skal droppes.

EDIT:

dette virker for så mange kolonner, som du vil:

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

tjek MySQL's dokumentation på OPRET INDEKS . En almindelig gotcha (mindst én jeg stødte på én gang) er at glemme at NULL = NULL er ikke sandt (men NULL ), derfor er {42, NULL} og {42, NULL} tilladt for et UNIKT indeks på to kolonner.



  1. JOIN og GROUP_CONCAT med tre tabeller

  2. MySQL-grupper efter dato og antal inklusive manglende datoer

  3. MySQL:DATE_ADD

  4. Avanceret MySQL:Find sammenhænge mellem afstemningssvar