【问题标题】:mysql update column inner join another tablemysql更新列内部连接另一个表
【发布时间】:2014-06-02 10:44:36
【问题描述】:

我正在尝试根据另一个表的字段更新字段。代码如下:

UPDATE h 
SET h.strength = c.strength 
FROM hesters AS h 
INNER JOIN campers AS c 
ON h.camper_id = c.id

获取“#1064 - 您的 SQL 语法有错误;”

我的代码基于这个答案here

有人发现语法错误吗?

【问题讨论】:

  • 您可能想要进行选择。

标签: mysql sql


【解决方案1】:

尝试做类似的事情:

UPDATE hesters AS h 
INNER JOIN campers AS c 
ON h.camper_id = c.id
SET h.strength = c.strength 

更新

这适用于sqlfiddle

【讨论】:

  • 语法错误。同样使用表名的别名也不应该影响这一点。
  • @themerlinproject 它适用于 sql fiddle。检查更新的答案。
【解决方案2】:

我不知道为什么上一个链接答案中的代码不起作用,但这是我最终使用的,来自UPDATE 上的 mysql 文档(搜索“join”)。

UPDATE hesters AS h,campers AS c 
SET h.strength = c.strength 
WHERE h.camper_id = c.id

【讨论】:

  • 那是因为链接的答案属于 SQL Server, MySQL(这是你正在使用的)。没有两个 RDBMS 供应商以完全相同的方式实现功能。
【解决方案3】:

您需要将您的JOIN 子句放在您的SET 子句之前,并且您的h 别名需要在开头设置:

UPDATE hesters AS h 
INNER JOIN campers AS c 
ON h.camper_id = c.id
SET h.strength = c.strength 

【讨论】:

  • 这给出了同样的错误。我在 mysql 文档中找到了正确的语法。
猜你喜欢
  • 2015-05-07
  • 1970-01-01
  • 2017-05-23
  • 2013-12-10
  • 1970-01-01
  • 2019-03-27
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多