【问题标题】:Update Table with values from same table使用同一表中的值更新表
【发布时间】:2017-11-17 05:29:20
【问题描述】:

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 的“set”)SQL 查询:文档

更新 justmarket.companies e,(选择 DISTINCT company_id from justmarket.companies where parent_id = system_id) c set 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

【问题讨论】:

  • 样本数据和期望的结果真的很有帮助。
  • 我认为第一个错误是 PhpMyAdmin 中的错误,它不理解多表 UPDATE 语法。
  • 查看 stackoverflow.com/questions/35608945/… 以获取另一个出现该错误的查询。
  • 更新了示例,我使用的是 MySQL 5.6.35

标签: mysql sql select


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多