Suppression des enregistrements en double sans tables temporaires
Lorsque vous êtes confronté à des enregistrements en double dans une table MySQL, vous pouvez rencontrer des situations où les tables temporaires s'avèrent peu pratiques ou indésirable. Cet article explore des solutions alternatives pour éliminer les doublons tout en conservant une seule instance de chaque enregistrement unique.
Une approche consiste à exploiter les index uniques. En ajoutant un index unique sur les colonnes qui identifient de manière unique les enregistrements (member_id, quiz_num, question_num,answer_num), vous empêchez l'insertion de lignes en double, garantissant qu'il n'existe qu'une seule ligne pour chaque ensemble de valeurs uniques.
< pre>ALTER IGNORE TABLE TableA
AJOUTER UN INDEX UNIQUE (member_id, quiz_num, question_num, Answer_num);
Vous pouvez également ajouter une clé primaire à la table et utiliser une requête pour supprimer sélectivement les enregistrements en double :
DELETE FROM membre <br>WHERE id IN (SELECT *</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> FROM (SELECT id FROM member GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1) ) AS A );
En utilisant la condition COUNT(*) > 1 dans la sous-requête, la requête identifie les lignes qui apparaissent plus d'une fois dans chaque combinaison unique de member_id, quiz_num, question_num etanswer_num. La colonne id de ces lignes en double est ensuite utilisée pour les localiser et les supprimer du membre. table.
Ces approches fournissent des méthodes efficaces et fiables pour supprimer les enregistrements en double sans recourir aux tables temporaires, garantissant l'intégrité des données et minimisant l'impact sur les performances.
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!