Řešení nalezené v http://bugs.mysql.com/bug.php? id=6980 , které pro mě fungovalo, je vytvořit alias pro dílčí dotaz, který vrátí položky. Takže
delete from table1 where id in
(select something from table1 where condition)
by se změnilo na
delete from table1 where id in
(select p.id from (select something from table1 where condition) as p)