対セットに適用される私はランダム[アドレス]でのstateidを更新しようとしていたので、私はこのクエリ更新割り当てが行
update [address]
set stateid = (select top 1 id
from lookupvalue
where lookuptypeid = 3 and code = 1
order by newid()),
countryid = 1
select *
from [address]
で始めたが、それが表示されたとして、すべての行が同じ値を取得するには、ときに私内側のselectクエリから[address]テーブルを参照しようとしましたが、更新は1行ごとに実行されます(そして、私は必要な効果を得ました)。
update [address]
set stateid = (select top 1 id
from lookupvalue
where lookuptypeid = 3 and [address].id = [address].id
and code = 1
order by newid()),
countryid = 1
select *
from [address]
誰かが、私は、行ごとに評価されるアップデートの割り当てを強制的に内側の選択にダミーの参照を行う必要があります、それは計画を照会するために関連して、上記の動作について詳しく説明することはできますか?
上記を実行することをお勧めしますか?私は助けることはできませんが、これは明らかなコードよりも少ないと感じています。あなたのアップデートに参加することは、より論理的なアプローチのようですね。 – Jens
@Jens。 。 。オプティマイザがある日よりスマートになり、相関節が不要であることに気づきます。 –