Mysql 使用内部联接和where进行sql更新

Mysql 使用内部联接和where进行sql更新,mysql,sql,sql-update,syntax-error,Mysql,Sql,Sql Update,Syntax Error,出于某种原因,我得到了一个语法错误: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第3行使用near“FROM newsreactions internal JOIN users ON newsreactions.memberId=users.id,其中u”的正确语法 但我想不出来。 如果我用一个select替换update和set,它可以正常工作。错误1064是一个MySQL语法错误。正确的MySQL语法是: UPDATE newsreactions SE

出于某种原因,我得到了一个语法错误:

1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第3行使用near“FROM newsreactions internal JOIN users ON newsreactions.memberId=users.id,其中u”的正确语法

但我想不出来。
如果我用一个
select
替换
update
set
,它可以正常工作。

错误1064是一个MySQL语法错误。正确的MySQL语法是:

UPDATE newsreactions
SET newsreactions.enabled = '0'
FROM newsreactions
INNER JOIN users ON newsreactions.memberId = users.id
WHERE users.active =  '0' AND users.comment LIKE  '%spam%'
注:

  • JOIN
    进入
    UPDATE
    子句
  • 表别名使查询更易于编写和读取
  • 我猜
    启用
    激活
    实际上是数值。如果是,请不要使用单引号

    • 错误1064是一个MySQL语法错误。正确的MySQL语法是:

      UPDATE newsreactions
      SET newsreactions.enabled = '0'
      FROM newsreactions
      INNER JOIN users ON newsreactions.memberId = users.id
      WHERE users.active =  '0' AND users.comment LIKE  '%spam%'
      
      注:

      • JOIN
        进入
        UPDATE
        子句
      • 表别名使查询更易于编写和读取
      • 我猜
        启用
        激活
        实际上是数值。如果是,请不要使用单引号

      set
      子句之前应该有
      join
      子句,MySQL中不应该有
      from
      子句:

      UPDATE newsreactions nr INNER JOIN
             users u
             ON nr.memberId = u.id
          SET nr.enabled = 0
      WHERE u.active =  0 AND u.comment LIKE '%spam%';
      

      join
      子句应位于
      set
      子句之前,MySQL中不应有
      from
      子句:

      UPDATE newsreactions nr INNER JOIN
             users u
             ON nr.memberId = u.id
          SET nr.enabled = 0
      WHERE u.active =  0 AND u.comment LIKE '%spam%';
      

      用您正在使用的数据库标记您的问题。MySQL多表更新语句的语法在此处可用:用您正在使用的数据库标记您的问题。MySQL多表更新语句的语法在此处可用:Thx!我使用了这个问题的答案:我的问题与它有何不同?@PascalClaes:另一个问题涉及的是Microsoft SQL Server,而不是MySQL。这些是不同的DBMS,在SQL语法上有一些显著的差异。多表更新语法就是其中一个差异的示例。这是一个重要的原因,确定您正在使用(询问)的数据库。Thx!我使用了这个问题的答案:我的问题与它有何不同?@PascalClaes:另一个问题涉及的是Microsoft SQL Server,而不是MySQL。这些是不同的DBMS,在SQL语法上有一些显著的差异。多表更新语法就是其中一个差异的示例。这是确定您正在使用(询问)哪个数据库很重要的一个重要原因。