SQL – Doppelte Datensätze finden
Eine häufig wiederkehrende Aufgabe: das Finden von doppelt vorhandenen Datensätzen. Hier sollen ein paar billige Möglichkeiten aufgelistet werden.
Wir wollen uns das am Beispiel einer Tabelle Logins anschauen:
ID | LOGIN | |
---|---|---|
1 | KaschupkeK | kaschupke@gmx.de |
2 | werti | werti@gmx.de |
3 | kaschupke | kaschupke@gmx.de |
Die billigste Variante ist das Suchen nach der Häufigkeit des Vorkommens in einer Spalte mittels COUNT, GROUP BY und HAVING Statement.
Hier z.B. lassen wir uns die Anzahl der Vorkommen der E-Mail-Adressen in der Tabelle „logins“ anzeigen.
SELECT login, COUNT(email) AS Anzahl FROM logins GROUP BY email HAVING ( COUNT(email) > 1 )
Ausgabe:
ANZAHL | |
---|---|
kaschupke@gmx.de | 2 |
Will man sich viele Datenspalten anzeigen lassen und zusätzlich die Anzahl eines Vorkommens, kann man das mittels JOIN umsetzen. Im Beispiel soll zu den Login Daten jeweils noch angezeigt werden, wie oft die E-Mail-Adresse vorkommt.
SELECT l.ID, l.LOGIN, l.EMAIL, emailcounter.anzahl as email_vorkommen FROM logins l LEFT JOIN ( SELECT COUNT (*) AS anzahl, email FROM logins GROUP BY email) emailcounter ON emailcounter.email = l.email ORDER by email_vorkommen DESC
Ausgabe:
LOGIN | EMAIL_VORKOMMEN | |
---|---|---|
KaschupkeK | kaschupke@gmx.de | 2 |
kaschupke | kaschupke@gmx.de | 2 |
werti | werti@gmx.de | 1 |
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen