使用模式匹配更新(MS Access)
Posted
技术标签:
【中文标题】使用模式匹配更新(MS Access)【英文标题】:UPDATE with Pattern Matching (MS Access) 【发布时间】: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 查询访问吗?一般模式是什么?
【问题讨论】:
【参考方案1】:事实证明,在执行这样的 UPDATE 查询时,您不能依赖“查看:数据表”选项。这个“为什么”对我来说仍然是一个谜。
当您点击 RUN 时,这种查询实际上可以正常工作。在“主”表上验证它。
【讨论】:
以上是关于使用模式匹配更新(MS Access)的主要内容,如果未能解决你的问题,请参考以下文章