使用模式匹配更新(MS Access)

UPDATE with Pattern Matching (MS Access)

问题

运行 具有模式匹配的 UPDATE 查询未更新所需 table 上的所有值。这是使用具有默认访问权限的 Office 365,因此此处不涉及拆分 tables 或 SQL 后端。

例子

一些传入数据有一堆键值对,其中键是要匹配的模式。总体方法是将数据导入 table ('incoming') 并使用 LIKE 执行和更新查询以更新主 table ('main') 上的值。

到目前为止,匹配项目一直没有问题。问题是将 all 结果设置为正确的值。

例如,传入数据(在 table 'incoming' 中)看起来像...

key    value
P*     P-Type
N*     N-Type

要更新的数据(在 table 'main' 中)看起来像...

name    type
Py      <Empty>
Pa      <Empty>
Pi      <Empty>
Ny      <Empty>
Na      <Empty>
Ni      <Empty>

我想 运行 更新查询结果应该是:

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;

但这只会更新第一个匹配项。愚弄 right/left 连接似乎并不能解决问题。尝试将值设置为 ... 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' 选项。 'why' 对我来说还是个谜。

当您点击 运行 时,这种查询实际上工作得很好。在 'main' table.

上验证