mysql报错:You can't specify target table 't_frame' for update in FROM clause

mysql报错解决

我在操作mysql update语句时

UPDATE t_frame SET t_frame.`is_use` =0  WHERE frame_id  IN(SELECT  frame_id  FROM `t_frame`  WHERE enterprise_id = "11076");

出现如下错误:

You can't specify target table 't_frame' for update in FROM clause

最后经过排查发现:

如果你正在做一个UPDATE/ INSERT/DELETE操作时,不能引用内部查询表(您可以但是从外部表引用一个字段...)

解决方案是在t_frame 中将子查询中的实例替换为SELECT B.* FROM (SELECT frame_id FROM t_frame WHERE enterprise_id = "11076")AS B,也就是说把它的查询结果作为另一个select的值,形成别名,然后再进行查询:如下所示

UPDATE t_frame SET t_frame.`is_use` =0  WHERE frame_id  IN(SELECT  B.* FROM (SELECT  frame_id  FROM `t_frame`  WHERE enterprise_id = "11076")AS B);
上一篇:mysql出现You can’t specify target table for update in FROM clause


下一篇:MySQL 0 IN(“Some”,“Set”)