Daniela Koller: Oarcle - löschen von doppelten Datensätzen

Beitrag lesen

Hi Markus

Wichtig, entweder an Testdaten ausprobieren oder vorher ein Backup machen! Ich hab es mangels Oracle (und im moment auch anderen Datenbanken) nicht getestet.

DELETE
  FROM tabelle AS a
  WHERE 1 < (SELECT count(*)
               FROM tabelle AS b
               WHERE a.id = b.id)

müsste es eigentlich tun. Das ganze löscht einen Datensatz wenn noch mindestens 2 mit der selben ID vorhanden sind. 2 deshalb, weil der aktuelle Datensatz ja schon einer ist und nur wenn noch ein zweiter gefunden wird, der hier gelöscht werden soll. Das ganze funktioniert nur, wenn es wirklich egal ist, welcher der Datensätze gelöscht werden soll.

Gruss Daniela