Para otros que encuentran esta pregunta buscando eliminar mientras usan una subconsulta, les dejo este ejemplo para burlar a MySQL (incluso si algunas personas parecen pensar que no se puede hacer):
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar');
te dará un error:
ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause
Sin embargo, esta consulta:
DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
FROM (SELECT id
FROM tableE
WHERE arg = 1 AND foo = 'bar') x);
funcionará bien:
Query OK, 1 row affected (3.91 sec)
Envuelva su subconsulta en una subconsulta adicional (aquí llamada x) y MySQL estará feliz de hacer lo que le pida.