使用一个查询更新多个表

时间:2018-11-28 02:08:42

标签: sql-server

记录要更新

select *
from Event_Measurable em
join Observation_Measurable om on em.Event_GUID = om.Event_GUID
where observation_guid in (8786975, 285886, 85976, 786976)

如下更新这些记录:

set observation_value_text = '.',    
observation_value_numeric = NULL,    
om.status = 'D',    
em.status = 'D',

我需要帮助来更新和设置上述查询结果中的值。有什么可以帮助我的。我试图更新表,但是失败了。

2 个答案:

答案 0 :(得分:0)

尝试一下:

update  X   set
    observation_value_text = '.'    
,   observation_value_numeric = NULL
,   om.status = 'D'    
,   em.status = 'D'
from
(
select
*
from Event_Measurable em
join Observation_Measurable om on em.Event_GUID = om.Event_GUID
where observation_guid in (8786975, 285886, 85976, 786976)
) X

让我知道它是否有效吗?

答案 1 :(得分:0)

您的set列表引用了多个表:这是无效的,因为只能用一个语句更新一个表。您需要运行2条update语句,因此您可以在第二个join中重复update,或者首先将结果放入临时表中,然后join放入实际的-待更新表。您可能希望将整个事情放到事务中,以便能够回滚错误。参见this reference

相关问题