![](/img/trans.png)
[英]MS Access SQL Query - syntax error(missing operator) in query expression
[英]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.