これは、 column3
を設定しようとしているためです SQL は、それが 1 つの値のみ (スカラー) であることを想定しています。複数の戻り値を渡すと、SQL エンジンは混乱します (どれを使用する必要がありますか?...結果を反復処理することを想定していません)。したがって、結果セット全体を更新する場合は、クエリからサブテーブルを作成して結合する必要があります。クエリは次のようになります
UPDATE Table3 SET Column3 = subtable.value FROM Table3 JOIN ( select t2.column3+t1.column3 as value, t1.id from table2 t2 with (nolock) join table1 t1 on table2.id=t1.id where table2.id IN (100,101) ) AS subtable ON subtable.id = Table3.id WHERE table3.id IN (100, 101)
プレ>table3.id が他の ID と一致するというこの仮定の下では、内部の
where table2.id IN ...
も実際には必要ありません。