【问题标题】:How can I update filed value from a select with inner join?如何从带有内部联接的选择中更新字段值?
【发布时间】:2013-04-17 01:18:39
【问题描述】:

我正在尝试使用带有内部联接的选择查询来更新 mysql 数据库中的字段值

我目前得到

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“AS cc WHERE cc.account_id = na.account_id”附近使用正确的语法

UPDATE accounts AS na
SET na.pdm_id = (
SELECT cp.person_id FROM `temp_accounts` AS ta INNER JOIN call_managment_system.accounts AS a ON ta.company_code = a.company_code
INNER JOIN contact_personal AS cp ON cp.name = ta.FSM AND contact_link = 'PDM' 
) 
WHERE a.account_id = na.account_id

如何修复此查询以使其正常工作?我想更新名为 pdm_id 的字段以将其设置为等于 cp.person_id

谢谢

【问题讨论】:

  • 你删除了AS cc 对吗?在您的代码中找不到它。
  • 你的AS ac在哪里?
  • 您能解释一下account 与其他表的关系吗?
  • 对不起,我刚刚更新了我的帖子,我已经删除了 cc yes 并将 ac 替换为 a。
  • 所以在 temp_accounts 表中它有 company_code 列,我可以喜欢到 accounts 表。然后从那里我可以通过位于 temp_accounts 字段中的 FSM 字段链接到 contact_personal。我不确定我是否清楚地解释了这一点。

标签: mysql sql database sql-update


【解决方案1】:
UPDATE  accounts na
INNER JOIN call_managment_system.accounts a
ON      a.account_id = na.account_id
INNER JOIN temp_accounts ta 
ON     ta.company_code = a.company_code
INNER JOIN contact_personal cp 
ON cp.name = ta.FSM        
SET     na.pdm_id = cp.person_id
WHERE   contact_link = 'PDM'

【讨论】:

  • 感谢您的帮助。您的查询有正确的答案,但是,我已对其进行了小改动。我认为我的帖子不是很清楚,所以会导致一些混乱,但多亏了你,我才能进行更新:)
猜你喜欢
  • 2014-11-21
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2011-12-01
  • 2016-04-08
  • 2015-03-17
  • 2023-02-16
相关资源
最近更新 更多