Dit komt omdat u probeert column3
. in te stellen naar een geretourneerd resultaat, en SQL verwacht dat dit slechts één waarde is (scalair). De SQL-engine raakt in de war wanneer u meer dan één retourwaarde doorgeeft (welke moet hij gebruiken?... hij gaat er niet van uit dat hij door de resultaten moet bladeren). Dus als u een volledige resultatenset wilt bijwerken, moet u een subtabel van uw query maken en daaraan meedoen. Uw zoekopdracht zou er meer zo uit moeten zien
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)
In de veronderstelling dat table3.id overeenkomt met de andere id's, heb je ook echt niet de inner where table2.id IN ...
nodig