duplicati

Mattepuffo's logo
Trovare ed eliminare duplicati in MySQL

Trovare ed eliminare duplicati in MySQL

Articolo aggiornato il 31-05-2015

Il problema dei duplicato c'è sempre, soprattutto quando i db sono belli pieni di record e stanno li da anni.

Grazie a semplici operazioni però possiamo trovari i recod duplicati e cancellarli.

Ovviamente prima di cancellare dei record solo perchè doppi/tripli/ecc fate accertatevi che sia giusto e fate un bel backup.

Prima di tutto vediamo come trovare i record duplicati.

Collegatevi al vostro db ed eseguite una query del genere:

SELECT author_name, COUNT(*) as Num FROM book GROUP BY author_name HAVING Num > 1 ORDER BY Num DESC;
+-------------------------------+-----+
| author_name                   | Num |
+-------------------------------+-----+
| stephen king                  |  15 |
| christian jacq                |  13 |
| clive cussler                 |  10 |
| deitel - deitel               |   3 |
| clive cussler, paul kemprecos |   3 |
| tolkien                       |   3 |
| arthur c. clarke              |   2 |
| no autore                     |   2 |
| arthur schopenauer            |   2 |
| pirandello                    |   2 |
+-------------------------------+-----+

Questo è un esempio reale preso da un mio db.

Ho cercato quante volte lun autore fosse ripetuto (che in questo caso vuol anche dire quanti libri un autore ha scritto).

Come vedete ho usato la clausola HAVING, con la quale prendiamo solo quei valori che hanno un conteggio superiore a 1.