UPDATE with Pattern Matching (MS Access)



问题

运行带有模式匹配的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'表中验证。

最新更新