Questo perché stai tentando di impostare column3
a un risultato restituito e SQL si aspetta che sia un solo valore (scalare). Il motore SQL si confonde quando gli si passa più di un valore di ritorno (quale dovrebbe usare?... non presuppone di scorrere i risultati). Quindi, se vuoi aggiornare un intero set di risultati, devi creare una sottotabella dalla tua query e unirti a quella. La tua query dovrebbe assomigliare di più a questa
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)
Sotto questo presupposto che table3.id corrisponda agli altri ID, non hai nemmeno bisogno del where table2.id IN ...