问题
运行带有模式匹配的UPDATE查询不会更新所需表上的所有值。这是使用Office 365默认的Access,所以这里没有分割表或SQL后端。
<标题>例子一些传入数据有一堆键值对,其中键是要匹配的模式。总体方法是将数据导入到表中('incoming'),并使用LIKE执行UPDATE查询以更新主表('main')上的值。
到目前为止,匹配项目还不是问题。问题是将所有结果设置为正确的值。
作为一个例子,传入的数据(在表'incoming'中)看起来像…
key value
P* P-Type
N* N-Type
和要更新的数据(在表'main'中)看起来像…
name type
Py <Empty>
Pa <Empty>
Pi <Empty>
Ny <Empty>
Na <Empty>
Ni <Empty>
我想运行一个UPDATE查询,结果应该是:
name type
Py P-Type
Pa P-Type
Pi P-Type
Ny N-Type
Na N-Type
Ni N-Type
我尝试了如下查询:
UPDATE incoming RIGHT JOIN main ON main.name LIKE incoming.key SET main.type=incoming.value;
,但这只更新第一个匹配。愚弄右/左连接似乎并没有做到这一点。尝试为子查询(如... SET main.type= (SELECT incoming.value FROM incoming WHERE main.name LIKE incoming.key)
)设置值不会产生所需的更改。我的努力只让我:
name type
Py P-Type
Pa <Empty>
Pi <Empty>
Ny N-Type
Na <Empty>
Ni <Empty>
Access如何获得所有匹配的值来更新?
作为一个注意事项:这个查询是由VBA调用的,所以我可以暴力迭代记录集。这是不可取的,因为与SQL查询相比,它更复杂,而且(我认为)更慢。访问可以用SQL查询做到这一点吗?它的一般模式是什么?
标题>事实证明,在执行这样的UPDATE查询时,不能依赖'View: Datasheet'选项。这其中的"原因"仍然是一个谜。
当你点击RUN时,这种查询实际上工作得很好。请在'main'表中验证。