Je to proto, že se pokoušíte nastavit column3
na vrácený výsledek a SQL očekává, že to bude pouze jedna hodnota (skalární). SQL engine je zmatený, když mu předáte více než jednu návratovou hodnotu (kterou by měl použít?... nepředpokládá iteraci výsledků). Pokud tedy chcete aktualizovat celou sadu výsledků, musíte z dotazu vytvořit podtabulku a připojit se k ní. Váš dotaz by měl vypadat spíše takto
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)
Za tohoto předpokladu, že tabulka3.id odpovídá ostatním ID, také opravdu nepotřebujete vnitřní where table2.id IN ...