Für andere, die diese Frage beim Löschen finden, während sie eine Unterabfrage verwenden, überlasse ich Ihnen dieses Beispiel zum Überlisten von MySQL (auch wenn einige Leute zu glauben scheinen, dass dies nicht möglich ist):
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar');
gibt Ihnen einen Fehler:
ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause
Aber diese Abfrage:
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar') x);
wird gut funktionieren:
Query OK, 1 row affected (3.91 sec)
Verpacken Sie Ihre Unterabfrage in einer zusätzlichen Unterabfrage (hier x genannt) und MySQL wird gerne tun, was Sie verlangen.