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);

浙公网安备 33010602011771号