使用模式匹配更新(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.
上验证
问题
运行 具有模式匹配的 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.
上验证