你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

MySQL update中使用select:You cant specify target table xxx for update in FROM clause 问题

2022/9/17 13:37:01

【问题】想通过update更新某个查询的合计值,这样就可以不用查询两次了(一个查询统计总数,一个更新表中的数据)

【原因】update语句不能包含select的查询结果

不能通过

update a set a.xx= (select xx from b) 

必须使用 join 进行连接

update a left join (select xx from b) c on 1=1 set a.xx = c.xx
--
update a inner join (select yy from b) c set a.xx = c.xx

【解决】通过 left join 来实现更新查询数据

UPDATE 
    task_info ti
LEFT JOIN 
    ( SELECT count( 1 ) AS 'num' FROM task_info WHERE del_flag = 0 AND parent_id = 63310 ) t 
ON 
    1 = 1 
SET 
    ti.subtasks = t.num 
WHERE
    id = 63310