使用join和select进行SQL更新

时间:2012-10-11 15:44:09

标签: sql sql-server-2008

我有以下查询。我想要做的是根据给定Id的DetailTbl中的值更新HeaderTbl中的Type字段。

update HeaderTbl
set HeaderTbl.Type = DetailTbl.Type
from HeaderTbl 
join DetailTbl on HeaderTbl.Id = DetailTbl.Id

对于HeaderTbl id,可以有多个DetailTbl ID。

对于给定的Id(假设Id = 5),我们在DetailTbl中有7个Id = 5的ID。 通过上面的查询,它会打到HeaderTbl然后7次并更新它 - 对吗?结果会坚持到最后的第7个,对吗?

我正在进行大量更新,所以只是想确保我不会忽视任何内容。

1 个答案:

答案 0 :(得分:1)

每行的更新只会进行一次。您可以使用“实际执行计划”或使用OUTPUT子句查看此信息。 如果ID的DetailTbl表在Type列中有多个不同的值,则结果不确定。

http://sqlfiddle.com/#!3/82363/1