Ilja: MySQL: Doppelte rows löschen

Beitrag lesen

yo,

Aber wie werfe ich jetzt Satz 2, 3, 4, ... raus und Satz 1 bleibt stehen?

du musst ein kriterium auswählen, wonach du entscheiden kannst, welcher datensatz drinne bleibt und welcher nicht. das könnte man anhand eines datums machen, welche älter oder neuer ist oder aber auch anhand des pk-schlüssels.

dein dbms muss dafür unterabfragen unterstützen, das geht bei mysql ab 4.1. in meinem beispiel lösche ich alle dubletten, deren pk-schlüssel größer ist, als das "orginal", das erhalten bleiben soll.

DELETE FROM tabelle t1
WHERE t1.pk_spalte IN
 (SELECT t2.pk_spalte
  FROM t2
  WHERE t2.adr_id = t1.adr_id
  AND   t2.slot_nr = t2.slot_nr
  AND   t2.pk_spalte > t1.pk_spalte
 )

Ilja