访问更新查询语法错误(缺少操作员)



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

这是一个简单的选择查询,运行良好,可以从访问表和链接的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;

我将其修改为更新查询,以从访问表中的数据中更新链接的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 (从tmp_form中选择well_uwi,main_form(当b内连接 eauser_nfx_hz_well_well_summary作为b.well_uwi = a.well_uwi

知道我缺少什么吗?

谢谢!

访问具有不同的语法用于更新。所有表都是在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;

请注意,在访问中,需要更新的完整查询(包括所有子查询(。您无法指定您仅更新特定表。

当您遇到锁或不可卸下表的问题时,通常可以使用DLookUp来避免这些问题:

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

我无法访问该SQL,但我认为它会起作用。您使用错误的语法,更新语句无法遵循从条款中。

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)

最新更新