Suppression efficace des enregistrements en double dans MySQL sans tables temporaires
Découvrir les enregistrements en double dans une base de données peut être un défi, surtout sans clé primaire . Cependant, il existe des techniques efficaces pour résoudre ce problème.
Dans notre cas, nous avons une table appelée TableA qui contient les réponses des utilisateurs aux questionnaires. En raison d'une erreur accidentelle, certains utilisateurs ont soumis des réponses en double. Notre objectif est de supprimer ces doublons tout en veillant à ce qu'une ligne restante persiste.
Solution 1 : Index unique
Une approche consiste à ajouter un index unique sur les colonnes concernées dans le tableau A. Cela renforcera le caractère unique de ces champs, empêchant l'insertion de doublons supplémentaires.
Pour y parvenir, exécutez la requête suivante :
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Solution 2 : Clé primaire et suppression
Alternativement, nous pouvons créer une clé primaire sur la table et utiliser une requête spécifique pour identifier et supprimer doublons.
Pour créer une clé primaire, on peut utiliser cette requête :
ALTER TABLE `TableA` ADD PRIMARY KEY (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Une fois la clé primaire en place, on peut supprimer les doublons à l'aide de cette requête :
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 );
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!