Doppelte Datensätze finden – SQL

Hier ein einfaches SQL Skript um doppelte Datensätze in einer Tabelle zu finden und anzeigen zu lassen.

Im Beispiel gehen wir von folgenden Informationen aus:

Die Tabelle in der Datenbank heißt: Products

Das Referenzfeld in der Tabelle heißt: productcode

SELECT productcodes, COUNT(productcode) AS NumOccurrences
FROM Products
GROUP BY productcode
HAVING ( COUNT(productcode) > 1 )

Angezeigt bekommt man alle productcodes der Datensätze die mehr als einmal in der Tabelle vorhanden sind.

17 Gedanken zu „Doppelte Datensätze finden – SQL“

      1. Hallo Hans Peter,

        danke für Deine schnelle Antwort. Ja, irgendwie habe ich ein Problem mit der Aggreatfunktion. Folgender Hintergrund: Unser System ist seinerzeit unsauber programmiert worden, weshalb wir nickname – Doubletten haben, die natürlich zu Problemen führen. Ich habe das obige Codebeispiel an unsere DB angepasst und erhalte über 7200 Einträge. Spitzenreiter ist der Nickname „Müller“ mit 275 Dopplungen 🙂

        SELECT nickname,
        COUNT(nickname) AS NumOccurrences
        FROM Personen
        GROUP BY nickname
        HAVING ( COUNT(nickname) > 1 )
        ORDER BY NumOccurrences

        Jetzt hätte ich aber gerne noch ein paar Spalten mehr angezeigt, vor allem halt die „pn“ (der Primärschlüssel der Tabelle) und die Email Adresse (zur Kontaktaufnahme). Wenn ich das Ganze jetzt entsprechend anpasse:

        select pn, persnr, nickname, individualpw, Nachname, Vorname, wohnort, Geburtsdatum, EMail, loginversuch, sichtbar,
        COUNT(nickname) AS NumOccurrences
        FROM Personen
        GROUP BY pn, persnr, nickname, individualpw, Nachname, Vorname, wohnort, Geburtsdatum, EMail, loginversuch, sichtbar
        HAVING ( COUNT(nickname) > 1 )
        ORDER BY NumOccurrences

        Bekomme ich aber leider 0 Einträge angezeigt. Wo ist mein Denkfehler?

  1. Hallo
    danke für das Script.
    Kleine Frage: da steht SELECT productcodes, …
    müsste es nicht SELECT productcode, … heissen, also code ohne S.
    Gruss

    Daniel M

  2. funktioniert, danke! masel Frage ist auch berechtigt und der zweite count eigentlich unnötig, denn HAVING ( NumOccurrences > 1 ) funktioniert auch.

  3. Vielen Dank! Hat mir schon mal viel Sucherei erspart 🙂

    Gibt es zufällig eine erweiterte Abfrage in dieser Kombination, welche die doppelten (in meinem Fall Artikelnummern) dann evtl. mit einem einmaligen Präfix versieht?

    LG

Schreibe einen Kommentar

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