2012-09-05 118 views
2

我有一個拉回到50行(這是正確的)查詢:更新查詢的MS Access加入

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 

任何人都可以幫忙嗎?

+0

第一個查詢獲取所有擁有'Authorizer Manager Name = 5'的記錄,第二個查詢將所有具有相應'Specialist'的記錄的'Authorizer Manager Name'的所有值設置爲5,其中'Penson Analyst 「是真的。 –

+0

在第一個例子中,您在WHERE子句中有一個更多的條件:「[Authorizer Manager Name] = 5」,但在第二個條件中,您在SET子句中使用了這個...所以當然更多的行將會返回更新... – Ian

回答

2

請注意,您的選擇查詢具有where子句中的過濾器:

where [Authorizer Manager Name] = 5 

這是制約返回設置爲那些具有「授權者經理姓名」的5.在您更新查詢行,這過濾器不在那裏。相反,您的更新查詢是在「Pension Analyst」字段爲TRUE時將「授權人管理器名稱」設置爲5。所以基本上,您的更新查詢正在處理您的選擇查詢的超集。

簡而言之,您的選擇查詢將返回養老金分析師爲真的那些行,並且授權人管理器名稱已經是5,並且您的更新僅在養老金分析師爲TRUE的情況下返回。