ऐसा इसलिए है क्योंकि आप column3
. सेट करने का प्रयास कर रहे हैं लौटाए गए परिणाम के लिए, और SQL अपेक्षा करता है कि केवल एक मान (स्केलर) हो। जब आप इसे एक से अधिक रिटर्न वैल्यू पास करते हैं तो SQL इंजन भ्रमित हो जाता है (इसे किसका उपयोग करना चाहिए? ... यह परिणामों के माध्यम से पुनरावृति नहीं मानता है)। इसलिए, यदि आप एक संपूर्ण परिणाम सेट को अपडेट करना चाहते हैं, तो आपको अपनी क्वेरी से एक सबटेबल बनाना होगा और उसमें शामिल होना होगा। आपकी क्वेरी कुछ इस तरह दिखनी चाहिए
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)
इस धारणा के तहत कि table3.id अन्य आईडी से मेल खाता है, आपको वास्तव में आंतरिक where table2.id IN ...
की भी आवश्यकता नहीं है।