0

次のクエリがあります。私がやろうとしているのは、特定のIDのDetailTblの値に基づいて、HeaderTblのTypeフィールドを更新することです。

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

HeaderTbl IDの場合、複数のDetailTblIDが存在する可能性があります。

与えられたId(Id = 5としましょう)に対して、DetailTblにId=5である7つのIdがあります。上記のクエリでは、HeaderTblに7回ヒットし、更新します-正しいですか?固執する結果は最後の7番目のものになりますか?

私は大規模な更新を行っているので、何も見逃さないようにしたいと思います。

4

1 に答える 1

1

各行の更新は1回だけ行われます。これは、「実際の実行プラン」またはOUTPUT句を使用して確認できます。IDのDetailTblテーブルが[タイプ]列に複数の異なる値である場合、結果は決定論的ではありません。

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

于 2012-10-11T16:14:01.767 に答える