• Super User

    Elencare i record doppi in una tabella

    Sul sito [...] mi ritrovo molti record doppi, ma a mano mi ci vuole una montana di tempo ad individuarli dentro il db, come posso scrivere ed eseguire una funzione che mi elenca i record doppi e poi a mano li seleziono per cancellarli usando phpmyadmin?
    O quali altre soluzioni potrei utilizzare?


  • User Attivo

    Ciao,

    per selezionare i record che hanno uno o più campi duplicati puoi fare così:

    
    SELECT * 
    FROM tabella
    USING tabella, tabella AS tabella_tmp
    WHERE tabella.id > tabella_tmp.id
    AND tabella.campo_duplicato_1 = tabella_tmp.campo_duplicato_1
    AND tabella.campo_duplicato_2 = tabella_tmp.campo_duplicato_2
    AND tabella.campo_duplicato_3 = tabella_tmp.campo_duplicato_3
    ...
    
    

    Per eliminarli direttamente basta sostituire SELECT * con DELETE

    
    DELETE 
    FROM tabella
    USING tabella, tabella AS tabella_tmp
    WHERE tabella.id > tabella_tmp.id
    AND tabella.campo_duplicato_1 = tabella_tmp.campo_duplicato_1
    AND tabella.campo_duplicato_2 = tabella_tmp.campo_duplicato_2
    AND tabella.campo_duplicato_3 = tabella_tmp.campo_duplicato_3
    ...
    
    

    Alessandro