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 | 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 | |
---|---|---|
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.
Leave a Comment