更新查询 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 加入的主要内容,如果未能解决你的问题,请参考以下文章