【问题标题】:MYSQL - UPDATE/INNER JOIN [duplicate]MYSQL - 更新/内部连接 ​​[重复]
【发布时间】: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

标签: mysql


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

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 2012-12-05
      • 2015-01-25
      • 2012-09-24
      • 2018-06-14
      • 2018-12-11
      • 2014-08-19
      • 1970-01-01
      • 2015-06-11
      相关资源
      最近更新 更多