trouver des doublons dans une table en SQL

Comment trouver des doublons dans une table en SQL

Partagez sur:

Ce tutoriel vous apprendra comment trouver des doublons dans une table en SQL.

En règle générale, il est recommandé de placer des contraintes uniques sur une table pour éviter les lignes en double.

Cependant, vous pouvez vous retrouver à travailler avec une base de données dans laquelle des lignes en double ont été créées par erreur humaine, un bogue dans votre application ou des données non nettoyées provenant de sources externes.

Pour suivre, vous aurez besoin d’un accès en lecture à votre base de données et d’un outil pour interroger votre base de données.

 

Trouver des doublons dans une table en SQL

pour trouver des doublons dans une table en SQL, la première étape consiste à définir vos critères pour une ligne en double.

Avez-vous besoin d’une combinaison de deux colonnes pour être unique ensemble, ou recherchez-vous simplement des doublons dans une seule colonne ?

Dans cet exemple, nous recherchons des doublons dans deux colonnes de notre table Users : username et email.

 

Écrire une requête pour vérifier l’existence de doublons

La première requête que nous allons écrire est une simple requête pour vérifier si des doublons existent bel et bien dans la table. Pour notre exemple, ma requête ressemble à ceci :

SELECT username, email, COUNT(*)
FROM users
GROUP BY username, email
HAVING COUNT(*) > 1

 

HAVING est important ici car contrairement à WHERE, HAVING filtre sur les fonctions d’agrégat.

Si des lignes sont renvoyées, cela signifie que nous avons des doublons.

Dans cet exemple, nos résultats ressemblent à ceci :

 

username email count
Pete pete@example.com 2
Jessica jessica@example.com 2
Miles miles@example.com 2

 

Répertorier toutes les lignes contenant des doublons

À l’étape précédente, notre requête a renvoyé une liste de doublons. Maintenant, nous voulons renvoyer l’intégralité de l’enregistrement pour chaque ligne en double.

Lire aussi: Comment importer des données Excel dans MySQL avec phpMyAdmin

Pour ce faire, nous devrons sélectionner la table entière et la joindre à nos lignes en double. Notre requête ressemble à ceci :

SELECT a.*
FROM users a
JOIN (SELECT username, email, COUNT(*)
FROM users 
GROUP BY username, email
HAVING count(*) > 1 ) b
ON a.username = b.username
AND a.email = b.email
ORDER BY a.email

 

Si vous regardez attentivement, vous verrez que cette requête n’est pas si compliquée.

Le SELECT initial sélectionne simplement chaque colonne de la table des utilisateurs, puis la joint à la table de données dupliquée de notre requête initiale.

Parce que nous joignons la table à elle-même, il est nécessaire d’utiliser des alias (ici, nous utilisons a et b) pour étiqueter les deux versions.

Voici à quoi ressemblent nos résultats pour cette requête :

 

id username email
1 Pete pete@example.com
6 Pete pete@example.com
12 Jessica jessica@example.com
13 Jessica jessica@example.com
2 Miles miles@example.com
9 Miles miles@example.com

 

Étant donné que cet ensemble de résultats inclut tous les identifiants de ligne, nous pouvons l’utiliser pour nous aider à dédupliquer les lignes ultérieurement.

 

Conclusion

Dans ce tutoriel, vous avez appris à trouver des doublons dans une table en SQL.


Partagez sur: