Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एकाधिक आईडी के लिए अद्यतन विवरण

ऐसा इसलिए है क्योंकि आप 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 ... की भी आवश्यकता नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL-सर्वर DB डिज़ाइन समय परिदृश्य (वितरित या केंद्रीकृत)

  2. SQL सर्वर में डेटाबेस मेल को कॉन्फ़िगर करना

  3. SQL सर्वर डेटाटाइम की तुलना शून्य से नहीं करने वाले इंडेक्स का उपयोग नहीं करता है

  4. टीएसक्यूएल मल्टी कॉलम अद्वितीय बाधा जो एकाधिक नल को भी अनुमति देती है

  5. SQL में समूह का उपयोग करके एकाधिक फ़ील्ड के लिए गिनती प्राप्त करें