Je le ferais de la manière suivante :
-
Créez une table temporaire à partir de votre table existante :
CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
-
Remplissez la table temporaire avec uniquement les enregistrements souhaités :
INSERT INTO data_to_keep SELECT DISTINCT * FROM table_with_dupes_in_it
-
Vider la table
TRUNCATE TABLE table_with_dupes_in_it
-
Renvoie les données de la table temporaire à la table d'origine
INSERT INTO table_with_dupes_in_it SELECT * FROM data_to_keep;
-
Nettoyer
DROP TEMPORARY TABLE data_to_keep
Sachez que cela peut consommer une énorme quantité de mémoire et/ou de stockage si la table en question est grande. S'il s'agit d'une grande table, je serais enclin à utiliser une vraie table au lieu d'une table temporaire afin de ne pas consommer des quantités excessives de mémoire sur votre serveur de base de données.
MODIFIER POUR AJOUTER :
Si vous êtes juste préoccupé par les doublons partiels (lignes où seules certaines des données sont identiques aux données saisies précédemment), vous voudrez utiliser GROUP BY. Lorsque vous utilisez GROUP BY, vous pouvez limiter MySQL pour qu'il renvoie une seule ligne contenant des données données au lieu de toutes.
SELECT *
FROM table
GROUP BY column_name
Vous devriez également envisager d'utiliser des index UNIQUE sur les colonnes pour lesquelles vous ne voulez pas contenir de données en double, cela empêchera les utilisateurs d'insérer des données en double en premier lieu.