MySQL Tips and Tricks: rimuovere i duplicati da una tabella



Assumiano di avere una tabella con alcune righe duplicate che vogliamo eliminare:


       mysql> select * from duplicati;
       +------+------+------+------+---------------------+
       | key  | a    | b    | c    | Data                |
       +------+------+------+------+---------------------+
       |    1 |    1 |    2 |    3 | 2008-04-16 10:55:35 |
       |    2 |    1 |    2 |    3 | 2008-04-16 10:55:35 |
       |    3 |    1 |    5 |    4 | 2008-04-16 10:55:35 |
       |    4 |    1 |    6 |    4 | 2008-04-16 10:55:35 |
       +------+------+------+------+---------------------+
       4 rows in set (0.00 sec)

Un modo veloce per rimuovere i duplicati (vedi riga con key 1 e 2) è aggiungere una chiave unica alle colonne a,b,c.

          mysql> ALTER IGNORE TABLE  duplicati ADD UNIQUE INDEX(a,b);

          mysql> select * from duplicati;

          +------+------+------+------+---------------------+
          | key  | a    | b    | c    |Data                 |
          +------+------+------+------+---------------------+
          |    1 |    1 |    2 |    3 | 2008-04-16 11:11:42 |
          |    3 |    1 |    5 |    4 | 2008-04-16 11:11:42 |
          |    4 |    1 |    6 |    4 | 2008-04-16 11:11:42 |
          +------+------+------+------+---------------------+
          3 rows in set (0.00 sec)

Il gioco è fatto.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest