Éliminer les lignes en double tout en préservant l'originalité
Question :
Le maintien de l'intégrité des données est crucial, et souvent, des entrées en double peuvent résulter des soumissions des utilisateurs. Dans un scénario où des entrées en double existent en fonction d'un champ spécifique, tel que SubscriberEmail, l'objectif est d'éliminer ces doublons, en ne conservant que l'entrée d'origine. Comment y parvenir efficacement sans recourir à l'échange de tables ?
Réponse :
Comme le tableau contient des identifiants uniques pour chaque ligne, une approche simple peut être adoptée :
<code class="sql">delete x from myTable x join myTable z on x.subscriberEmail = z.subscriberEmail where x.id > z.id</code>
Explication :
Cette requête exploite l'existence d'identifiants uniques pour identifier les enregistrements d'origine. En joignant la table par rapport à elle-même à l'aide du champ SubscriberEmail et en filtrant en fonction des ID, il marque efficacement les enregistrements en double comme ceux ayant des ID plus élevés que l'original. Ces doublons balisés sont ensuite supprimés.
Pour améliorer encore les performances des requêtes, envisagez d'utiliser un index sur la colonne SubscriberEmail. Cela garantit une récupération rapide des enregistrements basés sur ce champ, rendant la requête plus efficace. En déclarant la colonne SubscriberEmail comme colonne indexée UNIQUE, cela peut également aider à empêcher l'insertion d'entrées en double à l'avenir.
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!