同一表中的MYSQL更新值

同一表中的MYSQL更新值,mysql,sql,sql-update,Mysql,Sql,Sql Update,我有这张桌子 id child_id root_id ==================== 1 0 0 2 0 1 3 0 2 我想更新一行并将child_id更改为以root_id作为其id的特定行的id 我试过这个mysql语句 UPDATE table SET child_id = id WHERE id = root_id; 我想要的输出的一个例子是 id child_id root_id ========

我有这张桌子

id  child_id  root_id
====================
1     0        0
2     0        1
3     0        2
我想更新一行并将child_id更改为以root_id作为其id的特定行的id

我试过这个mysql语句

UPDATE table SET child_id = id WHERE id = root_id;
我想要的输出的一个例子是

id  child_id  root_id
====================
1     2        0
2     3        1
3     0        2

请检查,这是否有效。谢谢

您需要使用带有连接到自身的更新

update mytable t1
inner join mytable t2 on t1.id = t2.root_id
set t1.child_id = t2.id

你应该举例说明你想要得到的结果。您所描述的是,您希望将
childid
设置为
rootid
。您的查询引用的childid没有下划线,示例表引用的childid有下划线。我修复了我问题中的一些问题。表名是什么?我在“from在此位置不是有效输入”中遇到错误我不知道表名,你把“表”改成真正的表名,看看它是否有效
update mytable t1
inner join mytable t2 on t1.id = t2.root_id
set t1.child_id = t2.id