mysql更新列内部连接另一个表

Posted

技术标签:

【中文标题】mysql更新列内部连接另一个表【英文标题】:mysql update column inner join another table 【发布时间】: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。

有人发现语法错误吗?

【问题讨论】:

您可能想要进行选择。 【参考方案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 文档中找到了正确的语法。

以上是关于mysql更新列内部连接另一个表的主要内容,如果未能解决你的问题,请参考以下文章

更新与另一个表的内部连接

如何在使用两个内部连接并将表设置为连接时在 MySQL 中使用更新语句?

通过 MS Access 例程更新 SQL Server(内部连接错误)

使用内部联接更新多个表中的列

如何通过内部连接优化自连接选择到另一个表

MySQL 更新连接性能