【问题标题】:Syntax error (missing operator) when using UPDATE with INNER JOIN将 UPDATE 与 INNER JOIN 一起使用时出现语法错误(缺少运算符)
【发布时间】:2013-07-01 09:48:41
【问题描述】:

我正在尝试在 MS Access DB 上执行此 SQL 查询:

UPDATE WW_B
SET WW_B.WWtype_ID=1 
INNER JOIN New_data
  ON WW_B.StdNr = New_data.StdNr;

但我收到以下错误:

[Microsoft][ODBC Microsoft Access 驱动程序]

表达式1 INNER JOIN New_data on WW_B.StdNr = New_data.StdNr 中的语法错误(缺少运算符)。

我看不出哪里需要任何运算符,因为我没有使用任何括号或引号。

我也尝试了WWtype_ID='1'WWtype_ID="1" 并得到了同样的错误。

我做错了什么?

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    我遇到了同样的问题,在寻找答案时发现了这个问题。幸运的是,我在工作中挖掘了一些 Access 查询时找到了解决方案。

    这只是 MS Access 不能很好地使用标准 SQL 语法的另一种情况。

    其他答案不正确。您不需要 FROM 子句,Access 只会给您相同的错误消息。遇到错误的地方是放置 JOIN 的地方。 FROM...JOIN... 看起来很直观,但这是 MS Access,使用 SQL 从来都不是直观的。

    在 Access 中,UPDATE 似乎取代了 FROM。因此,您将 JOIN 语句添加到 UPDATE 子句的末尾。

    UPDATE WW_B
    INNER JOIN New_data
      ON WW_B.StdNr = New_data.StdNr
    SET WW_B.WWtype_ID=1;
    

    如果需要,您还可以在 SET 语句之后添加 WHERE 子句。

    【讨论】:

      【解决方案2】:

      UPDATE 上使用INNER JOIN 时需要FROM 子句:

      UPDATE WW_B
      SET WW_B.WWtype_ID = 1
      FROM WW_B
      INNER JOIN New_data
        on WW_B.StdNr = New_data.StdNr
      

      【讨论】:

        【解决方案3】:

        您缺少FROM 子句

        UPDATE WW_B SET WW_B.WWtype_ID=1 FROM <your table> INNER JOIN New_data on WW_B.StdNr = New_data.StdNr
        

        【讨论】:

        • 感谢您的回答,但我仍然收到相同的错误“...in expression '1 FROM WW_B INNER JOIN New_data on WW_B.StdNr = New_data.StdNr'。”此外,如果我已经使用 UPDATE 声明了表名,为什么还要使用 FROM 声明?
        猜你喜欢
        • 1970-01-01
        • 2015-04-07
        • 2019-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多