MYSQL - 更新/内部连接 ​​[重复]

Posted

技术标签:

【中文标题】MYSQL - 更新/内部连接 ​​[重复]【英文标题】:MYSQL - UPDATE/INNER JOIN [duplicate] 【发布时间】:2019-03-27 09:18:13 【问题描述】:

我正在尝试在(MY)SQL 中使用INNER JOIN 进行UPDATE 声明。我已经举了一些例子并编辑了我的表名和表列。但是我的 mysql 还是老是报错(#1064)。

错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“FROM favorites INNER JOIN images ON favorites.image_id = images.id W”附近使用正确的语法

SQL

UPDATE
  favorites
SET
  favorites.archive = 1
FROM
  favorites
INNER JOIN
  images
ON
  favorites.image_id = images.id
WHERE
  favorites.user_id = '1'

在此先感谢您帮助我解决这个问题。

亲切的问候,

【问题讨论】:

请看其他问题,或查看the docs 【参考方案1】:

Update 在 MySQL 中的语法不同。您不能在 Update 语句中使用 From 子句。

就像:

Update (all the tables with join relationships if any) 
Set (field = value/expression) 
Where (all the conditions)

请尝试以下查询:

UPDATE
  favorites 
INNER JOIN
  images
ON
  favorites.image_id = images.id
SET
  favorites.archive = 1
WHERE
  favorites.user_id = '1'

完整的syntax 是:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    expr | DEFAULT

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

【讨论】:

【参考方案2】:

以下应该对你有用。

UPDATE favorites 
INNER JOIN images ON favorites.image_id= images.id
SET favorites.archive = 1 
WHERE favorites.user_id = '1';

【讨论】:

以上是关于MYSQL - 更新/内部连接 ​​[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从内部连接更新列[重复]

来自内部连接查询的更新集抛出错误 [重复]

MySql从内部连接更新语法错误

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

MySQL更新连接查询以解决重复值

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