Maison >base de données >tutoriel mysql >Comment identifier efficacement les enregistrements en double en fonction de plusieurs colonnes dans SQL ?

Comment identifier efficacement les enregistrements en double en fonction de plusieurs colonnes dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 19:11:39884parcourir

How to Efficiently Identify Duplicate Records Based on Multiple Columns in SQL?

Identification des enregistrements en double sur plusieurs colonnes

Le défi posé est de répliquer la fonctionnalité du code SQL fourni, qui vise à identifier et récupérer dupliquez les enregistrements en fonction de la combinaison de deux colonnes, à savoir « nom » et « ville ». L'objectif est d'exclure les cas où une seule colonne, soit « nom » ou « ville », correspond et de ne prendre en compte que les enregistrements dont les deux colonnes sont identiques.

Pour répondre à cette exigence, la réponse fournie exploite une sous-requête pour compter les occurrences des combinaisons « nom » et « ville » dans la table « trucs ». Cette sous-requête compte les lignes regroupées par « nom » et « ville » et filtre les combinaisons dont le nombre est supérieur à 1, indiquant les doublons.

select name, city, count(*) as qty
from [stuff]
group by name, city
having count(*) > 1

La requête principale rejoint ensuite la table « stuff » d'origine. avec les résultats de la sous-requête, correspondant à la fois à « nom » et à « ville ». Cette opération de jointure identifie efficacement les enregistrements en double qui répondent aux critères spécifiés. Le résultat final élimine les faux positifs en excluant les cas où une seule colonne correspond.

select s.id, t.*
from [stuff] s
join (
...
    select name, city, count(*) as qty
    from [stuff]
    group by name, city
    having count(*) > 1
) t on s.name = t.name and s.city = t.city

En conséquence, la requête récupère avec succès le résultat souhaité :

id      name  city   
904834  jim   London  
904835  jim   London  
90145   Fred  Paris   
90132   Fred  Paris
90133   Fred  Paris

Cette approche fournit un et polyvalente pour identifier les enregistrements en double sur la base de plusieurs colonnes, garantissant l'exactitude et l'exhaustivité des résultats de la requête.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn