2017-08-18 59 views
0

我有兩個表。 用戶1:SQL Server:如何使用另一個表中的值更新表格

UserID HolidayCity ValidFrom ValidTo 
1  NULL  '1900-01-01' '2017-05-09' 
1  NULL  '2017-05-09' NULL 
2  NULL  '1900-01-01' '2017-05-09' 
2  NULL  '2017-05-09' NULL 

Users2:

UserID CityID 
1  33 
2  55 

我需要從從第二表中的每個用戶ID在CityID列中的值的第一個表更新HolidayCity列,但只有那些記錄,哪裏ValidTo IS NULL,使生成的表用戶1將是:

UserID HolidayCity ValidFrom ValidTo 
1  NULL  '1900-01-01' '2017-05-09' 
1  33   '2017-05-09' NULL 
2  NULL  '1900-01-01' '2017-05-09' 
2  55   '2017-05-09' NULL 

能否請你告訴我^ h要做那個?

+0

謝謝所有的快速答案。他們幾乎都是一樣的,他們爲我工作。 –

回答

3

這是一個簡單的inner join

update u 
    set u.holidaycity=c.cityid 
from users1 u 
    inner join users2 c 
    on u.userid = c.userid 
    and u.validto is null 
0
UPDATE  U1 
SET   U1.HolidayCity = U2.CityID 
FROM  Users1   AS U1 
INNER JOIN Users2   AS U2 ON U2.UserId = U1.UserId 
WHERE  U1.ValidTo IS NULL 

如果您對上面的代碼有任何疑問,高興地擴大,但是這是一個簡單的更新格式。

0

試試這個:

update a 

set a.HolidayCity = b.CityID 
FROM   Users1 AS a INNER JOIN 
         Users2 AS b ON a.UserId = b.UserId 
WHERE  (a.ValidTo IS NULL) 
0

簡單的方法將內容從一個表複製到其他情況如下:

UPDATE table2 
SET table2.col1 = table1.col1, 
table2.col2 = table1.col2, 
... 
FROM table1, table2 
WHERE table1.memberid = table2.memberid 
+2

我建議你使用ANSI連接,你在那裏的代碼非常過時。有一個在這裏閱讀:http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx – Leonidas199x

+0

@ Leonidas199x是的,我檢查tankyou勸告 –

相關問題