Recherche d'enregistrements en double à l'aide de GROUP BY dans SQL Server

Il est parfois nécessaire de rechercher des enregistrements en double dans SQL Server. Il est possible de trouver des doublons en utilisant DISTINCT, ROW NUMBER ainsi que GROUP BY approche.

Les enregistrements en double peuvent parfois créer des problèmes lors de l'affichage de rapports ou de la mise à jour d'insertions multiples. La recherche d'enregistrements en double dans une base de données nécessite un complément d'enquête. Dans certains cas, les enregistrements en double sont positifs, mais tout dépend des données et de la conception de la base de données.

Par exemple, si un client a commandé le même produit deux fois à la même date et avec la même adresse de livraison et de facturation, cela peut entraîner un enregistrement en double.

Laissez-nous créer une table Client avec les champs Prénom, Nom et Numéro de portable.

CREATE TABLE CLIENT (Prénom VARCHAR (50), Nom VARCHAR (50), MobileNo VARCHAR (15)); INSÉRER DANS LES VALEURS CLIENT ('Niraj', 'Yadav', 989898); INSÉRER DANS LES VALEURS CLIENTS («Chetan», «Gadodia», 959595); INSÉRER DANS LES VALEURS CLIENTS («Chetan», «Gadodia», 959595); INSÉRER DANS LES VALEURS CLIENT ('Atul', 'Kokam', 42424242); INSÉRER DANS LES VALEURS CLIENT ('Atul', 'Kokam', 42424242); INSÉRER DANS LES VALEURS CLIENT ('Vishal', 'Parte', 9394453); INSÉRER DANS LES VALEURS CLIENT ('Vishal', 'Parte', 9394453); INSÉRER DANS LES VALEURS CLIENT ('Vishal', 'Parte', 9394453); INSÉRER DANS LES VALEURS CLIENT ('Jinendra', 'Jain', 121212); INSÉRER DANS LES VALEURS CLIENT ('Jinendra', 'Jain', 121212); SELECT * FROM CLIENT;

En utilisant le DISTINCT approche, nous pouvons rapidement obtenir des lignes uniques dans une table.

SELECT DISTINCT Prénom, Nom, MobileNo FROM CLIENT;

Cependant, cela ne montre pas combien de fois une ligne a été dupliquée. En utilisant l'approche GROUP BY, nous pouvons trouver ceci.

Recherche de doublons avec GROUP BY

L’ajout d’un groupe et d’un champ de comptage à l’affichage de la combinaison Prénom, Nom et MobileNo indique combien de fois le nom de chaque client apparaît.

SELECT FirstName, LastName, MobileNo, COUNT (1) en tant que CNT FROM CLIENT GROUPE PAR FirstName, LastName, MobileNo;

GROUP BY n'affichera qu'un seul enregistrement pour chaque combinaison de Prénom, Nom et MobileNo.

Le nombre CNT indique combien de fois la ligne a été dupliquée.
CNT = 1 indique que la ligne n'apparaît qu'une seule fois.

Laissez-nous filtrer en utilisant le Avoir la clause pour exclure les lignes qui apparaissent une seule fois.

SÉLECTIONNER Prénom, Nom, MobileNo, COUNT (1) comme CNT DANS CLIENT GROUPE PAR Prénom, Nom, MobileNo HAVING COUNT (1)> 1;