Maison >base de données >tutoriel mysql >Comment rechercher des lignes en double basées sur plusieurs champs dans une table SQL ?

Comment rechercher des lignes en double basées sur plusieurs champs dans une table SQL ?

DDD
DDDoriginal
2025-01-23 01:57:11648parcourir

How to Find Duplicate Rows Based on Multiple Fields in a SQL Table?

Localisation des enregistrements en double à l'aide de plusieurs champs dans SQL

Identifier les entrées en double sur la base d'une seule colonne est une tâche SQL simple. Par exemple, pour rechercher des e-mails en double dans un tableau users :

<code class="language-sql">SELECT email, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1;</code>

La complexité augmente lors de l'identification des doublons dans plusieurs champs, tels que l'adresse e-mail et le nom.

Pour identifier les lignes contenant des combinaisons d'adresses e-mail et de nom identiques, utilisez cette requête :

<code class="language-sql">SELECT name, email, COUNT(*)
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1;</code>

Cela regroupe les données à la fois par name et email, puis filtre pour afficher uniquement les groupes avec plus d'une entrée, révélant ainsi les doublons.

Comment ça marche :

La clause HAVING est cruciale ; il filtre les résultats groupés, garantissant que seules les combinaisons de name et email apparaissant plus d'une fois sont renvoyées. Un résultat typique ressemblerait à :

<code>| name | email       | COUNT(*) |
|------|-------------|----------|
| Tom   | john@example.com | 2        |
| Tom   | tom@example.com  | 2        |</code>

Considération importante :

Les systèmes de bases de données varient dans leur gestion du regroupement de colonnes non agrégées. Certains peuvent nécessiter une inclusion explicite dans la clause GROUP BY. Si votre système de base de données ne prend pas en charge ce regroupement implicite, vous devrez ajuster la requête en conséquence.

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