Cancellare tutti i records duplicati

Vorrei cancellare tutti i dati (records) duplicati da una tabella MySql, ad es. ho una tabella con i seguenti dati


+----+--------+
| id | name   |
+----+--------+
| 1  | marco  |
| 2  | giulio    |
| 3  | filippo   |
| 4  | marco  |
| 5  | marco  |
| 6  | giulio    |
+----+--------+

vorrei poter fare in modo che le righe (rows) si ripetino con il valore del campo 'name' siano presenti all'interndo della tabella una volta sola, o se preferite in altre parole desidero cancellare tutte le righe duplicate.

In Corso 3
MySql 29-04-2019 2 Risposte 809 Visite +2
Michele Ladonia

Michele Ladonia

Autore di questa domanda

Risposte ( 2 approvate )

  1. Giacomo Barrile
    +1
    29-04-2019 16:45:19
    Rispondi

    Anziché impelegarti in complicate e perigliose query e subquery DELETE, il modo migliore e più semplice per ottenere quello che cerchi, ovvero evitare che si creiino rows duplicate è quello di creare un indice unico (UNIQUE INDEX) sui campi (colonne) che ti interessano restino unici, nel tuo caso il solo campo nome; ti basta modificare la tabella in questo modo:

    ALTER IGNORE TABLE My_Table
    ADD UNIQUE INDEX index_name (name);

    tra le parentesi, se necessario puoi specificare anche più di un campo, basta separarli con le virgole. Con la keyword IGNORE eviti il problema delle righe duplicate a monte.

  2. Michele Ladonia
    0
    29-04-2019 16:52:08
    Rispondi

    Benissimo Giacomo Barrile, la tua è un'ottima soluzione, ma io ho bisogno di cancellare le rows duplicati di una tabella con records già esistenti, alterando la tabella come tu dici cosa accade?

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva