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 EMAIL
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:

EMAIL 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 EMAIL_VORKOMMEN
KaschupkeK kaschupke@gmx.de 2
kaschupke kaschupke@gmx.de 2
werti werti@gmx.de 1

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert