Condividi
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
5
MySql
29-04-2019
2 Risposte
900 Visite
+2
Risposte ( 2 approvate )
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:
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.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?