Penso che si potrebbe semplicemente provare ad aggiungere un indice univoco utilizzando IGNORA:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQL dovrebbe rispondere con qualcosa come:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
Naturalmente, si Lascerai fino a MySQL per decidere quali file eliminare.
EDIT:
Questo funziona per tutte le colonne che vuoi: documentazione
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
controllo di MySQL su CREATE INDEX. Un trucco comune (almeno uno che ho incontrato una volta) è dimenticare che NULL = NULL
non è vero (ma NULL
), quindi {42, NULL} e {42, NULL} sono consentiti per un indice UNIQUE su due colonne.
se si dispone per esempio di 3 righe duplicate all'anno 2008, quali righe si decide di eliminare? –
Duplicato di http://stackoverflow.com/q/18932/80714 La risposta è chiara e concisa. – Chadwick
Questa non è la stessa domanda –