繁体   English   中英

SQL语法错误缺少操作员MS Access

[英]SQL Syntax Error Missing Operator MS Access

我正在尝试运行一个查询,如果另一个表中的字段等于test,则该查询将更新一个表中的字段。 这是代码:

UPDATE Table1 AS t1 INNER JOIN Table2 AS t2 
ON t1.Field1 = t2.F_Name
SET t1.Field4 =
    (CASE 
        WHEN t2.PlayField = 'test' THEN 'test' 
        ELSE 'No test' 
    END);

但是,运行它时,我总是收到Syntax Error (missing operator) 不知道我在做什么错...

由于您只想了解问题。.您的SQL:

UPDATE Table1 AS t1 INNER JOIN Table2 AS t2 
ON t1.Field1 = t2.F_Name
SET t1.Field4 =
    (CASE 
        WHEN t2.PlayField = 'test' THEN 'test' 
        ELSE 'No test' 
    END);

MS Access不支持CASE语句。 它看起来像SQL Server,而不是MS Access。

您可以尝试:

 SET t1.Field4 =
IIf([t2].[playfield]='test','test','No test');

这基本上说:Set t1.Field =如果t2.PlayField = 'Test' ,我们将使用单词'test',如果不是,我们将使用'No Test'。

CASE ... WHEN在Access SQL中不受支持。 改用IIf

UPDATE Table1 AS t1 INNER JOIN Table2 AS t2 
ON t1.Field1 = t2.F_Name
SET t1.Field4 =
    IIf(t2.PlayField = 'test', 'test', 'No test');

如果问题与MS Access数据库引擎有关...

在这里看看: MS Access 2003:更新查询使用另一个表中的值更新一个表中的值

您的查询应类似于:

UPDATE TableName
SET TableName.Field1 = (SELECT AnotherTable.Field2
                        FROM AnotherTable
                       WHERE AnotherTable.Field3 = TableName.Field2)
WHERE (<<condition>>);

CASE WHEN ... END语句仅可在VBA中使用。 要在查询中实现诸如条件结果之类的功能,请使用IIF函数。

请参阅: IIF函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM