You can't specify target table 'xxx' for update in FROM clause
MySQL语句错误:You can’t specify target table ‘xxx’ for update in FROM clause
Mysql不能在同一语句中,对同一张表进行select筛选出某些数据后进行Update操作。
举个栗子:
person表:
id | |
---|---|
1 | john@example.com |
2 | bob@example.com |
3 | john@example.com |
下面sql语句会报 “You can’t specify target table ‘person’ for update in FROM clause” 的错误。
delete from person where id in (select id from person where email = 'john@example.com');
update person set email = 'xxx' where id in (select id from person where email = 'john@example.com');
改成如下,通过一个中间表即可解决。
delete from person where id in (select id from (select id from person where email = 'john@example.com') a);
update person set email = 'xxx' where id in (select id from (select id from person where email = 'john@example.com') a);
如有不对之处 敬请指正