SQL Server:如何使用另一个表中的值更新表

B.S*_*iuk 0 sql-server sql-update

我有两张桌子。用户 1:

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
Run Code Online (Sandbox Code Playgroud)

用户2:

UserID CityID
1      33
2      55
Run Code Online (Sandbox Code Playgroud)

我需要使用每个 UserID 的第二个表中 CityID 列中的值更新第一个表中的 HolidayCity 列,但只有那些ValidTo 为 NULL 的记录,以便结果表 Users1 将是:

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
Run Code Online (Sandbox Code Playgroud)

你能告诉我怎么做吗?

Sql*_*Zim 6

这是一个简单的 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
Run Code Online (Sandbox Code Playgroud)