Dies liegt daran, dass Sie versuchen, column3
festzulegen zu einem zurückgegebenen Ergebnis, und SQL erwartet, dass dies nur ein Wert (Skalar) ist. Die SQL-Engine wird verwirrt, wenn Sie ihr mehr als einen Rückgabewert übergeben (welchen sollte sie verwenden? ... sie geht nicht davon aus, die Ergebnisse zu durchlaufen). Wenn Sie also einen gesamten Ergebnissatz aktualisieren möchten, müssen Sie eine Untertabelle aus Ihrer Abfrage erstellen und dieser beitreten. Ihre Abfrage sollte ungefähr so aussehen
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)
Unter dieser Annahme, dass table3.id mit den anderen IDs übereinstimmt, brauchen Sie auch wirklich nicht das innere where table2.id IN ...