Dzieje się tak, ponieważ próbujesz ustawić column3
do zwróconego wyniku, a SQL oczekuje, że będzie to tylko jedna wartość (skalarna). Silnik SQL jest zdezorientowany, gdy przekazujesz mu więcej niż jedną zwracaną wartość (której powinien użyć?...nie zakłada iteracji wyników). Tak więc, jeśli chcesz zaktualizować cały zestaw wyników, musisz utworzyć podtabelę z zapytania i dołączyć do niej. Twoje zapytanie powinno wyglądać mniej więcej tak
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)
Przy założeniu, że table3.id pasuje do innych identyfikatorów, naprawdę nie potrzebujesz również wewnętrznego where table2.id IN ...