Les tables MySQL contiennent souvent des enregistrements en double qui peuvent encombrer la base de données et compromettre l'intégrité des données. La suppression de ces doublons est cruciale pour maintenir l’exactitude des données et améliorer les performances des requêtes. Cet article explore une approche efficace pour éliminer les enregistrements en double sans utiliser de tables temporaires.
La méthode la plus simple consiste à créer un index unique sur les colonnes qui définissent l'unicité de la table. Pour la table TableA, l'index suivant garantit que la combinaison de member_id, quiz_num, question_num etanswer_num est unique :
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Une fois l'index créé, MySQL maintient automatiquement son intégrité, empêchant ainsi les enregistrements en double d'être inséré.
Alternativement, l'ajout d'une clé primaire à la table peut également empêcher les doublons insertions. La requête suivante supprime les enregistrements en double en fonction de la clé primaire :
DELETE FROM member WHERE id IN ( SELECT * FROM ( SELECT id FROM member GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1) ) AS A );
L'instruction DELETE supprime les enregistrements en fonction de la colonne id, garantissant qu'il ne reste qu'un seul enregistrement avec la même combinaison unique de colonnes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!