本文主要是介绍MySql报错:You can‘t specify target table ‘t‘ for update in FROM clause,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
工作中遇到一个需求,现在抽象出来,简单来说,就是一个update 语句的条件是需要用select查询语句查出来的,数据如下:
需要更新p_id字段为主键id,一开始sql如下:
UPDATE test.`user` t
SET t.p_id = ( SELECT p.id FROM test.`user` p );
我这个sql是抽象出来的,实际的sql里面还有连其他的表,而且字段也不是p.id,所以不要纠结为什么不直接用 t.id放在最后。
直接报错:
查询资料后,发现有解决办法,是在update的时候使用join连表(网上一大堆说在包一层select查询的不行),正确的sql如下:
UPDATE test.`user` t
INNER JOIN test.`user` p ON t.id = p.id
SET t.p_id = p.id
成功:
这篇关于MySql报错:You can‘t specify target table ‘t‘ for update in FROM clause的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!