Artikel - Detailansicht

Icon Aktuelles Löschen von doppelten Datensätzen

Bei unsauberer Programmierung können leicht in einer Tabelle Duplikate entstehen (beispielsweise, wenn der User den Submitbutton 2x drückt und beim darauffolgenden Insert in die Datenbank nicht das Vorhandensein der Daten überprüft wird usw.).
Da die doppelten Datensätze unnötigen Datenmüll verursachen, sollte man sie eigentlich wieder entfernen. Das Problem lässt sich auf verschiedenen Wegen lösen, z.B. wie in diesem Fall mit reinem SQL.

Unsere Beispieltabelle soll dieses Form haben:

pkUID sUsername sPassword sEmail
1 boqus b123 boqus@boqus.de
2 boqus b123 boqus@boqus.de
3 xxx haus xxx@xxx.de
4 xxx haus xxx@xxx.de
5 werner nase2 werner@werner.de
6 werner nase2 werner@werner.de

Wie man sieht, befinden hier doppelte Einträge in der Tabelle. Der Primärschlüssel (Spalte pkUID) enthält verschiedenen Werte, da sie durch die Datenbank selbst generiert wurden.

Um die Tabelle zu bereinigen, müssen die Reihen 2,4 und 6 gelöscht werden. Mit dem folgenden SQL-Statement wird diese ganze Aufgabe erledigt:

delete
from tabelle1 where pkUID in(
  select O.pkUID from Tabelle1 O inner join Tabelle1 I
  on
    I.sUsername=O.sUsername and
    I.sPassword=O.sPassword and
    I.sEmail=O.sEmail
    and I.pkUID < O.pkUID
)

Das ganze funktioniert wie folgt: In der inneren Selectabfrage wird die Tabelle mit sich selbst verknüpft und alle Primärschlüssel ermittelt, die einen korrelierenden Datenbsatz haben aber mit einer grösseren ID.
Dieses Ergebniss wird an das DELETE-Statment weitergereicht, dass dann die Datensätze löscht.

Das Ergebniss ist dann eine bereinigte Tabelle:

pkUID sUsername sPassword sEmail
1 boqus b123 boqus@boqus.de
3 xxx haus xxx@xxx.de
5 werner nase2 werner@werner.de


Steffen Goldfuss steffen@goldfuss.de - 12.11.2001

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen