访问更新查询语法错误(缺少运算符)

时间:2018-03-28 16:27:08

标签: sql oracle ms-access

这在Access中似乎是一个相当普遍的问题,但在研究了多个线程并尝试了所有类型的变体之后,我仍然无法找到解决问题的方法。

这是一个简单的Select查询,运行得很好,从Access表和链接的Oracle表中提取数据:

SELECT a.WELL_UWI, b.MAIN_FORM
FROM  (SELECT WELL_UWI, MAIN_FORM
      FROM tmp_form) AS b
INNER JOIN eauser_nfx_hz_well_summary AS a
ON b.WELL_UWI = a.WELL_UWI;

我将其修改为更新查询,以便从Access表中的数据更新链接的Oracle表,如下所示:

UPDATE a
SET a.MAIN_HZ_FM = b.MAIN_FORM
FROM  (SELECT WELL_UWI, MAIN_FORM
      FROM tmp_form) AS b
INNER JOIN eauser_nfx_hz_well_summary AS a
ON b.WELL_UWI = a.WELL_UWI;

我最后收到了这条消息:

  

查询表达式'b.MAIN_FORM FROM中的语法错误(缺少运算符)   (从tmp_form中选择WELL_UWI,MAIN_FORM)AS b INNER JOIN   eauser_nfx_hz_well_summary AS a ON b.WELL_UWI = a.WELL_UWI

知道我缺少什么吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

Access具有不同的更新语法。所有表格都是在UPDATE关键字后直接指定的,并且没有FROM

UPDATE (SELECT WELL_UWI, MAIN_FORM
      FROM tmp_form) AS b
INNER JOIN eauser_nfx_hz_well_summary AS a
ON b.WELL_UWI = a.WELL_UWI
SET a.MAIN_HZ_FM = b.MAIN_FORM;

请注意,在Access中,完整查询(包括所有子查询)需要是可更新的。您无法指定您只更新特定的表格。

如果您遇到锁定或不可更新的表格问题,通常可以使用DLookUp来避免这些问题:

UPDATE eauser_nfx_hz_well_summary AS a
SET a.MAIN_HZ_FM = DLookUp("MAIN_FORM", "tmp_form", "WELL_UWI = '" & a.WELL_UWI & "'")

答案 1 :(得分:0)

我没有权限测试这个SQL,但我认为它会起作用。您使用了错误的语法,UPDATE语句不能跟随FROM子句。

UPDATE eauser_nfx_hz_well_summary a
SET a.MAIN_HZ_FM = 
(SELECT b.MAIN_FORM from tmp_form b INNER JOIN eauser_nfx_hz_well_summary a1 ON b.WELL_UWI = a1.WELL_UWI AND a.WELL_UWI = a1.WELL_UWI)