【发布时间】:2019-02-05 15:18:52
【问题描述】:
我很难使用 MS Access,因为与其他数据库相比,语法有点挑剔。
我正在尝试验证一个表并将该表与包含多列信息的主表进行比较。目前,我正在尝试将表 ct2011 中字段名称为 Difference_Value 的表更新为等于 (ct2011.Distribution_Amount - AggregateFinal.SumOfDollars)。
还指定要更新的行,因为并非 MASTER 中的所有行都在表 ct2011 中。
以下是我的查询。
UPDATE ct2011
SET ct2011.Difference_Value = (ct2011.Distribution_Amount - AggregateFinal.SumOfDollars)
FROM
ct2011 as ct
INNER JOIN
AggregateFinal af
ON
ct.Employee_ID = af.EmpId AND ct.Legal_Name = af.LegalName AND ct.Distribution_Plan_Year = af.CalculationAwardPeriod AND ct.Award_Year = af.AwardPeriod;
我收到了Syntax error (missing operator)。它指定它在= 之后的SET expressions 期间遇到错误。
【问题讨论】:
-
给定查询到底有什么问题?有错误提示吗?
-
@NicoHaase 我收到语法错误(缺少运算符)。它指定它在 = 之后的 SET 表达式期间遇到错误。
-
您为 ct2011 设置了
ct的表别名,但继续使用ct2011来完全限定字段名称。 -
MS Access 中的
UPDATE查询中没有FROM子句。在你声称这是 ficky 之前,MySQL 也遵循同样的UPDATE ... JOIN风格。还是挑剔?尝试在UPDATEquery in Oracle 中编写一个联接,它既不支持JOIN也不支持FROM,除非在子查询中,也类似于SQLite。是的,所有 SQL 方言都挑剔!