【问题标题】:UPDATE with Pattern Matching (MS Access)使用模式匹配更新(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 查询访问吗?一般模式是什么?

【问题讨论】:

    标签: sql ms-access-2010


    【解决方案1】:

    事实证明,在执行这样的 UPDATE 查询时,您不能依赖“查看:数据表”选项。这个“为什么”对我来说仍然是一个谜。

    当您点击 RUN 时,这种查询实际上可以正常工作。在“主”表上验证它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多