Maison >base de données >tutoriel mysql >Comment rechercher des enregistrements en double exacts dans plusieurs colonnes dans SQL ?
Recherche de valeurs en double dans plusieurs colonnes
Dans votre code SQL, vous cherchez à identifier les enregistrements en double en fonction de critères spécifiques. Pour y parvenir, vous pouvez utiliser une combinaison de regroupement et de filtrage conditionnel.
L'exemple fourni vise à trouver les enregistrements en double qui correspondent à la fois aux colonnes de nom et de ville. Cependant, votre requête d'origine présente un léger problème : elle inclut également des enregistrements dans lesquels seul le nom ou la ville correspond, plutôt que d'exiger une correspondance exacte sur les deux.
Pour résoudre ce problème, vous pouvez modifier la requête comme suit :
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
Cette requête rejoint la table [stuff] avec une sous-requête qui calcule le nombre d'enregistrements en double pour chaque paire unique de valeurs de nom et de ville. En définissant la clause HAVING pour inclure uniquement les groupes dont le nombre est supérieur à 1, vous pouvez limiter les résultats aux lignes qui représentent de véritables doublons.
Le résultat de cette requête doit correspondre au résultat souhaité :
id | name | city |
---|---|---|
904834 | jim | London |
904835 | jim | London |
90145 | Fred | Paris |
90132 | Fred | Paris |
90133 | Fred | Paris |
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!