如何在表和查询上使用SELECT进行INSERT

Ale*_*004 4 sql ms-access

我在基于JOIN访问UPDATE时遇到问题.

我需要合并2个Statement:

SELECT a.f1, a.f2, a.f3
  FROM tableA a, viewB b
  WHERE a.f2 = b.f2 AND a.f3 = b.f3
Run Code Online (Sandbox Code Playgroud)

viewB是一个查询,但工作正常

UPDATE tableA a
  SET a.f1 = 'x'
Run Code Online (Sandbox Code Playgroud)

工作得很好.

现在我尝试:

UPDATE tableA a, viewB b
  SET a.f1 = 'x'
  WHERE a.f2 = b.f2 AND a.f3 = b.f3
Run Code Online (Sandbox Code Playgroud)

失败,Access说:

操作必须使用可更新的查询.

这是愚蠢的,因为viewB中没有触及任何字段.我使用FROM,JOIN Subselect尝试了几个其他解决方案,但没有找到解决方案.

有人知道一个聪明的解决方案吗?

And*_*mar 5

试试update .. join语法:

update tableA a
inner join viewB b on a.f2 = b.f2 and a.f3 = b.f3
set a.f1 = 'x'
Run Code Online (Sandbox Code Playgroud)

或者:

update tableA a
set a.f1 = 'x'
where exists (select * from viewB b where a.f2 = b.f2 and a.f3 = b.f3)
Run Code Online (Sandbox Code Playgroud)