Detta beror på att du försöker ställa in column3
till ett returnerat resultat, och SQL förväntar sig att det endast är ett värde (skalär). SQL-motorn blir förvirrad när du skickar den mer än ett returvärde (vilket ska den använda?...den förutsätter inte att det går igenom resultaten). Så om du vill uppdatera en hel resultatuppsättning måste du skapa en undertabell från din fråga och gå med på den. Din fråga borde se ut mer så här
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 detta antagande att table3.id matchar de andra id:na, behöver du verkligen inte den inre where table2.id IN ...