更新查询 MS Access 加入

Posted

技术标签:

【中文标题】更新查询 MS Access 加入【英文标题】:Update query MS Access join 【发布时间】:2012-09-05 13:51:30 【问题描述】:

我有一个拉回 50 行的查询(这是正确的):

select * from [Review Results], [Specialist Name Table]   
where [Authorizer Manager Name] = 5 
and [Specialist Name Table].[Penson Analyst] = TRUE
and [Review Results].[Authorizer Name] = [Specialist Name Table].[ID]

我正在尝试从上述内容中进行更新查询,但我似乎无法正确理解。这是我正在使用的查询,但它想要更新 461 行而不是 50 行:

update
[Review Results] e
INNER JOIN [Specialist Name Table] s ON  e.[Authorizer Name] = s.[ID]
set e.[Authorizer Manager Name] = 5
where s.[Penson Analyst] = TRUE  

有人可以帮忙吗?

【问题讨论】:

第一个查询获取所有具有Authorizer Manager Name = 5 的记录,第二个查询将Authorizer Manager Name 的所有值设置为5 对于每个具有相应Specialist 的记录,其中Penson Analyst 是是的。 在第一个中,您的 WHERE 子句中还有一个条件:“[Authorizer Manager Name] = 5”,但在第二个中,您在 SET 子句中使用它...所以当然会返回更多行进行更新... 【参考方案1】:

请注意,您的选择查询在 where 子句中有一个过滤器:

where [Authorizer Manager Name] = 5

这将返回集限制为“授权管理器名称”为 5 的行。在您的更新查询中,此过滤器不存在。相反,您的更新查询是说“当 Pension Analyst 字段为 TRUE 时,将 Authorizer Manager Name 设置为 5”。所以基本上,您的更新查询正在处理您的选择查询的超集。

简而言之,您的选择查询将返回 Pension Analyst 为 TRUE 且 Authorizer Manager Name 已为 5 的行,而您的更新仅返回 Pension Analyst 为 TRUE 的行。

【讨论】:

以上是关于更新查询 MS Access 加入的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 中的加入或子查询

MS Access SQL:使用另一个表中的Sum更新连接查询

无法更新加入的记录集 - MS Access

MS-Access - 使用加入另一个表的结果更新列

MS Access SQL 查询 - 加入错误

查询不会更新子窗体 MS-Access 中的表