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
答案 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