我在基于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尝试了几个其他解决方案,但没有找到解决方案.
有人知道一个聪明的解决方案吗?
试试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)