Dette er fordi du forsøger at indstille column3
til et returneret resultat, og SQL forventer, at det kun er én værdi (skalær). SQL-motoren bliver forvirret, når du sender den mere end én returværdi (hvilken en skal den bruge?...den antager ikke at gentage resultaterne). Så hvis du vil opdatere et helt resultatsæt, skal du oprette en undertabel fra din forespørgsel og deltage i det. Din forespørgsel burde se mere sådan ud
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)
Under denne antagelse, at table3.id matcher de andre id'er, har du heller ikke brug for den indre where table2.id IN ...