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

08-03 20:24