Pour les autres qui trouvent cette question cherchant à supprimer tout en utilisant une sous-requête, je vous laisse cet exemple pour déjouer MySQL (même si certaines personnes semblent penser que cela ne peut pas être fait) :
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar');
vous donnera une erreur :
ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause
Cependant cette requête :
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar') x);
fonctionnera très bien :
Query OK, 1 row affected (3.91 sec)
Enveloppez votre sous-requête dans une sous-requête supplémentaire (nommée ici x) et MySQL se fera un plaisir de faire ce que vous demandez.