Suchen von doppelten Datensätzen mithilfe von GROUP BY in SQL Server

Es gibt verschiedene Zeiten, zu denen wir doppelte Datensätze in SQL Server suchen müssen. Du kannst Duplikate mit finden DISTINCT, ROW NUMBER sowie die GROUP BY Ansatz.

Doppelte Datensätze können manchmal Probleme verursachen, wenn Berichte angezeigt oder ein Update mit mehreren Einfügungen durchgeführt wird. Um doppelte Datensätze in einer Datenbank zu finden, müssen weitere Untersuchungen durchgeführt werden. In einigen Fällen sind doppelte Datensätze positiv, aber alles hängt auch von den Daten und dem Datenbankdesign ab.

Wenn beispielsweise ein Kunde dasselbe Produkt zweimal am selben Tag mit derselben Versand- und Rechnungsadresse bestellt hat, kann dies zu einem doppelten Datensatz führen.

Lassen Sie uns eine Tabelle erstellen Kunde mit den Feldern Vorname, Nachname und Handynummer.

CREATE TABLE CUSTOMER (Vorname VARCHAR (50), Nachname VARCHAR (50), MobileNo VARCHAR (15)); EINSETZEN IN KUNDENWERTE ('Niraj', 'Yadav', 989898); EINFÜGEN IN KUNDENWERTE ('Chetan', 'Gadodia', 959595); INSERT IN KUNDENWERTEN ('Chetan', 'Gadodia', 959595); EINFÜGEN IN KUNDENWERTE ('Atul', 'Kokam', 42424242); EINFÜGEN IN KUNDENWERTE ('Atul', 'Kokam', 42424242); EINSETZEN IN KUNDENWERTE ('Vishal', 'Parte', 9394453); EINSETZEN IN KUNDENWERTE ('Vishal', 'Parte', 9394453); EINSETZEN IN KUNDENWERTE ('Vishal', 'Parte', 9394453); INSERT IN KUNDENWERTEN ('Jinendra', 'Jain', 121212); INSERT IN KUNDENWERTEN ('Jinendra', 'Jain', 121212); WÄHLEN * VOM KUNDEN;

Verwendung der DISTINCT Bei diesem Ansatz können wir schnell eindeutige Zeilen in einer Tabelle erhalten.

SELECT DISTINCT Vorname, Nachname, Mobilnummer VON KUNDEN;

Dies zeigt jedoch nicht, wie oft eine Zeile dupliziert wurde. Mit dem GROUP BY-Ansatz können wir dies finden.

Duplikate mit GROUP BY suchen

Durch Hinzufügen einer Gruppierung und eines Zählfelds zu unserer Anzeige aus Kombination aus Vorname, Nachname und MobileNo wird angezeigt, wie oft der Name jedes Kunden angezeigt wird.

SELECT Vorname, Nachname, MobileNo, COUNT (1) als CNT VON KUNDENGRUPPE NACH Vorname, Nachname, MobileNo;

GROUP BY zeigt nur einen Datensatz für jede Kombination aus Vorname, Nachname und MobilNr.

Die Anzahl CNT zeigt an, wie oft die Zeile dupliziert wurde.
CNT = 1 zeigt an, dass die Zeile nur einmal erscheint.

Lassen Sie uns mit dem filtern Klausel haben Zeilen ausschließen, die nur einmal angezeigt werden.

SELECT Vorname, Nachname, MobileNo, COUNT (1) als CNT VON KUNDENGRUPPE NACH Vorname, LastName, MobileNo HABE COUNT (1)> 1;