使用同一个表中的值更新表

时间:2017-06-14 21:52:49

标签: mysql sql select

SQL问题。我将system_id作为partent_id与相应的parent_id(表company_id)放在一起。所以我尝试了这个,但是我遇到了几个错误:

update justmarket.companies e, (Select DISTINCT company_id from justmarket.companies where parent_id = system_id) c
set e.parent_id = c.company_id
where e.company_id = c.company_id

结束错误:

  

错误静态分析:

     

在分析过程中发现了6个错误。

     

预计会有表达。 (靠近"("在31位)出乎意料   令牌。 (附近"("在31位)发现了一个新的声明,但没有   它与前一个之间的分隔符。 (靠近"选择"在位置   32)意外的令牌。 (近")"在位置112)意外的令牌。   (靠近" c"在114位)发现了一个新的声明,但没有分隔符   它与前一个之间。 (靠近"设置"位置117)SQL   查询:文档

     

更新justmarket.companies e,(从中选择DISTINCT company_id)   justmarket.companies其中parent_id = system_id)c设置e.parent_id =   c.company_id,其中e.company_id = c.company_id

     

MySQL说:文档

     

1205 - 超过锁定等待超时;尝试重新启动事务

表: company_id company_name system_id parent_id 1姓名1 55121 0 2 Name2 52211 55121 3姓名3 55444 55121

我想做什么 company_id company_name system_id parent_id 1姓名1 55121 0 2姓名2 52211 1 3姓名3 55444 1

1 个答案:

答案 0 :(得分:1)

尝试使用显式JOIN语法而不使用子查询。

UPDATE companies AS e
JOIN companies AS c ON e.company_id = c.company_id
SET e.parent_id = c.company_id
WHERE c.parent_id = c.system_id