sql >> Databasteknik >  >> RDS >> Mysql

MySql:ta bort tabellrader beroende på kolumndubblettvärden?

Jag tror att du helt enkelt kan försöka lägga till ett UNIKT INDEX med IGNORE:

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

MySQL bör svara med något i stil med:

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

Naturligtvis överlåter du till MySQL att bestämma vilka rader som ska släppas.

EDIT:

detta fungerar för så många kolumner du vill:

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

kolla MySQL:s dokumentation på SKAPA INDEX . En vanlig gotcha (minst en jag stötte på en gång) är att glömma att NULL = NULL är inte sant (men NULL ), därför är {42, NULL} och {42, NULL} tillåtna för ett UNIKT index på två kolumner.



  1. MySQL Performance:Introduktion till JOINs i SQL

  2. Vilket är bättre sätt att skriva PHP-kod för att infoga data

  3. Mysql anpassad ordning efter och alfabetisk ordning efter:

  4. Infoga variabler MySQL med Python, fungerar inte