【发布时间】:2021-12-06 15:53:03
【问题描述】:
问题
使用模式匹配运行 UPDATE 查询不会更新所需表上的所有值。这是使用具有 Access 默认值的 Office 365,因此此处不涉及拆分表或 SQL 后端。
示例
一些传入数据有一堆键值对,其中键是要匹配的模式。总体方法是将数据导入表('incoming')并使用 LIKE 执行和 UPDATE 查询以更新主表('main')上的值。
到目前为止,匹配项目还没有问题。问题是设置 all 结果等于正确的值。
例如,传入的数据(在“传入”表中)看起来像...
key value
P* P-Type
N* N-Type
要更新的数据(在“主”表中)看起来像...
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 查询访问吗?一般模式是什么?
【问题讨论】:
标签: sql ms-access-2010