On MySQL, you cannot use the same table for both the subquery FROM clause and the update target.
Source: MySQL :: MySQL 5.1 Reference Manual :: 13.2.9.9 Subquery Errors
Example:
mysql> delete from user \
-> where user.id in \
-> (select user.id from user \
-> left join reserve_data on user.id = reserve_data.user_id where reserve_data.id is null);
ERROR 1093 (HY000): You can't specify target table 'user' for update in FROM clause
Workaround
mysql> delete from user \
-> where user.id in \
-> (select x.id from \
-> (select user.id from user left join reserve_data on user.id = reserve_data.user_id where reserve_data.id is null) \
-> as x \
-> );
Query OK, 350 rows affected (0.00 sec)
In the above example, the subquery creates an implicit temporary table, so it doesn't count as the same table you're updating.
Source: SQL Delete: can't specify target table for update in FROM clause - Stack Overflow