Doppelte Einträge in mySQL Tabelle finden

on

Mit einer SQL-Abfrage können doppelte Einträge, auch Dubletten genannt, sehr schnell und einfach innerhalb einer Tabelle identifiziert werden. Dazu dient die folgende Tabelle mit dem Namen „Liste“ als Vorlage:

id vorname name
1 Max Mustermann
2 Maria Müller
3 Olaf Heinz
4 Peter Schuster
5 Karl Richter
6 Wilhelm Bach
7 Maxi Mustermann
8 Max Mustermann

Zu erkennen ist ein doppelter Eintrag mit der ID 1 und 8. Der Datensatz mit der Nr. 7 hat zwar den gleichen Nachnamen, jedoch einen unterschiedlichen Vornamen. Daher darf dieser Eintrag nicht als Duplikat erkannt werden.

Mit der folgenden Abfrage werden alle vorkommenden Duplikate aufgelistet und ihre Anzahl an Vorkommen gezählt:

SELECT vorname, name, COUNT(id) AS cnt
FROM liste
GROUP BY vorname,name
HAVING cnt > 1

Es fehlt hierbei jedoch noch eine genauere Ausgabe, welche Datensätze genau als Duplikate erkannt wurden. Es soll möglich sein, alle doppelten Datensätze einzeln aufzulisten. Dies erfolgt über ein Inner Join auf die gleiche Datenbanktabelle:

SELECT liste.vorname, liste.name
FROM liste
INNER JOIN (
SELECT vorname,name
FROM liste
GROUP BY vorname,name
HAVING COUNT(id) > 1) dup ON liste.name = dup.name && liste.vorname = dup.vorname

 

Schreibe einen Kommentar

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