更新语句给出表别名错误

时间:2019-03-27 22:08:35

标签: sql tsql

我无法确定以下语法有什么问题。

alter table #table1 add C21 datetime
update #table1 a
set a.C21 = b.C21_result_lab from #table2 b where a.person_id = b.person_id and 
a.source_id = b.source_id

错误消息:

  

第102层15级州立363行   'a'附近的语法不正确。

1 个答案:

答案 0 :(得分:1)

这是正确的语法:

alter table #table1 add C21 datetime;
update a
set a.C21 = (
  select b.C21_result_lab from #table2 b 
  where 
    a.person_id = b.person_id 
    and 
    a.source_id = b.source_id
)
from #table1 a

您必须确保select查询返回的行不超过1个。
或者,您也可以使用联接来实现:

update a
set a.C21 = b.C21_result_lab 
from #table1 a inner join #table2 b 
on a.person_id = b.person_id and a.source_id = b.source_id