2010-03-16 42 views
1

一位開發人員更改了表mapuserid列中的所有值。我需要他們改回來,因爲userid也是profiles表中的關鍵。值得慶幸的是,由於不值得進入的原因,mapprofiles共享另一列,employeeId從表X中填充來自表Y的值列表

所以我想作爲profiles查出服用的所有值userid並覆蓋在useridmap匹配的行中的值。

我的直覺是做這樣的事情:

UPDATE map,profiles 
SET map.userid = profiles.userid 
WHERE map.employeeId = profiles.employeeId 

但SQLServer的2005年不關心有UPDATE子句中兩個表。

有什麼建議嗎?

回答

6

您可以在更新有FROM子句:

UPDATE m 
SET m.userid = profiles.userid 
from map m 
inner join profiles on m.employeeId = profiles.employeeId 
+1

這個別名的形式更清晰,恕我直言。它更明確地將UPDATE和FROM鏈接起來。 – gbn 2010-03-16 18:42:00

3

在T-SQL語法,更新部分包含要更新的內容,並且FROM 可能包含額外的數據源(S)。

請嘗試以下

UPDATE map 
SET map.userid = profiles.userid 
FROM profiles 
WHERE map.employeeId = profiles.employeeId 

更新語法:http://msdn.microsoft.com/en-us/library/ms177523.aspx