Lo farei nel modo seguente:
-
Crea una tabella temporanea dalla tua tabella esistente:
CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
-
Popola la tabella temporanea solo con i record che desideri:
INSERT INTO data_to_keep SELECT DISTINCT * FROM table_with_dupes_in_it
-
Svuota il tavolo
TRUNCATE TABLE table_with_dupes_in_it
-
Restituisce i dati dalla tabella temporanea alla tabella originale
INSERT INTO table_with_dupes_in_it SELECT * FROM data_to_keep;
-
Pulisci
DROP TEMPORARY TABLE data_to_keep
Tieni presente che questo può consumare un'enorme quantità di memoria e/o spazio di archiviazione se la tabella in questione è grande. Se si tratta di un tavolo grande, sarei propenso a utilizzare un tavolo reale invece di un tavolo temporaneo per non consumare quantità eccessive di memoria sul server DB.
MODIFICA PER AGGIUNGERE:
Se sei solo preoccupato per duplicati parziali (righe in cui solo alcuni dei dati sono identici ai dati inseriti in precedenza), ti consigliamo di utilizzare GROUP BY. Quando usi GROUP BY, puoi limitare MySQL a restituire solo una riga che contiene dati dati invece di tutti loro.
SELECT *
FROM table
GROUP BY column_name
Dovresti anche considerare l'utilizzo di indici UNIQUE sulle colonne in cui non desideri contenere dati duplicati, ciò impedirà agli utenti di inserire dati duplicati in primo luogo.