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处“)附近”)意外令牌。
(在位置114处的“ c”附近)找到了新语句,但没有定界符
在它和上一个之间。 (在“设置”位置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名称2 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
最佳答案
尝试使用显式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