Selbstreferenziertes Löschen

MySQL lässt es leider nicht zu, Datensätze anhand eines Subselects auf die selbe Tabelle zu löschen.
Also funktiniert folgendes nicht:

DELETE FROM mytable WHERE mytable.id IN (SELECT mytable.id FROM mytable LEFT JOIN mytable2 ON mytable.id = mytable2.mytableid WHERE mytable2.id IS NULL)

MySQL lässt sich mit einem kleinen Trick dazu überreden, dass doch zu tun. Ein weiteres Subselect. Damit wird intern ein Temp-Table angelegt und damit geht das dann.


DELETE FROM mytable WHERE mytable.id IN (SELECT * FROM (SELECT mytable.id FROM mytable LEFT JOIN mytable2 ON mytable.id = mytable2.mytableid WHERE mytable2.id IS NULL) as x)

GD Star Rating
loading...

Kommentar verfassen