Thomas: Dublikate löschen

Hallo

Habe eine SQL Tabelle mit mehreren Einträgen mit der gleichen ProduktNr.(prodNr.). Wie kann ich jetzt alle bis auf einen von den doppelten Einträgen löschen?

Danke für eure Hilfe.

Gruss
Thomas

  1. Hallo,

    Habe eine SQL Tabelle mit mehreren Einträgen mit der gleichen ProduktNr.(prodNr.). Wie kann ich jetzt alle bis auf einen von den doppelten Einträgen löschen?

    1.  Backup der Tabelle, noch besser der Datenbank erstellen.
    2.  Zu löschende Datensätze identifizieren. [*]
    2a) Identifikation zwischenspeichern
    3.  Diese Datensätze löschen.

    [*] Gegebenenfalls temporär eine zusätzliche Spalte einfügen, die Dir diese
        Identifikation ermöglicht.

    mehrfache Datensätze findest Du zunächst über eine entsprechende Abfrage und Nutzung der HAVING-Klausel:

    HAVING COUNT(prodNr) > 1

    Nun benötigst Du ein Kennzeichen, mit dem Du die zu löschenden Datensätze identifizieren kannst. Dazu könntest Du zum Beispiel eine id der Datensätze nehmen, falls die Datensätze eindeutige ID-Werte haben. Die Liste erhältst Du zum Beispiel über eine korrelierte Unterabfrage.

    Im einfachsten Fall nutzt Du die Abfrage, die Dir diese Liste erzeugt in der WHERE-Klausel Deines DELETE-Statements. Es kann jedoch sein, dass Dein Datenbankmanagementsystem (DBMS) sowas nicht unterstützt. MySQL ist für solche Funktionalitätseinschränkungen bekannt.

    Falls Du bei der Umsetzung Probleme hast, frage nach. Vergiß bitte nicht anzugeben, welches DBMS in welcher Version Du verwendest und welche Spalten Deine Tabelle hat. Ein paar Beispieldatensätze wären auch ganz nett.

    Freundliche Grüße

    Vinzenz