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

एसक्यूएल में दो अपडेट स्टेटमेंट अलग कैसे हैं?

एक आंतरिक जुड़ाव के साथ, अंतर केवल एक अर्थपूर्ण अंतर है। दोनों प्रश्नों को एक ही क्वेरी योजना और ठीक एक ही परिणाम का उत्पादन करना चाहिए।

हालाँकि, जब आप बाहरी जॉइन का उपयोग कर रहे होते हैं, तो यह मायने रखता है कि क्या कंडीशन where पर है खंड या on खंड पर।

UPDATE li
SET li.Description = im.Description
FROM tbSupplierLineItem li
RIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode 
                                AND li.ProcessedDate >= CONVERT(DATE,GETDATE())

. से अलग है
UPDATE li
SET li.Description = im.Description
FROM tbSupplierLineItem li
RIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode 
WHERE li.ProcessedDate >= CONVERT(DATE,GETDATE())

न केवल सिमेंटिक स्तर पर।
जबकि पहली क्वेरी सही जॉइन का अपेक्षित परिणाम लौटाएगी, दूसरी क्वेरी एक आंतरिक जुड़ाव से अपेक्षित परिणाम लौटाएगी।
ऐसा इसलिए है क्योंकि सही तालिका मान शून्य हो सकता है यदि आपके पास बाईं तालिका पर रिकॉर्ड हैं जो उनसे मेल नहीं खाते हैं, और किसी भी मान की तुलना शून्य (एक अन्य नल सहित) से करने के परिणामस्वरूप एक झूठा परिणाम होगा, यह मूल रूप से एक आंतरिक जुड़ाव में सही जुड़ाव को बदल रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पैरेंट चाइल्ड पदानुक्रम तालिका से क्वेरी कैसे बनाएं

  2. SQL सर्वर त्रुटि 206:संकार्य प्रकार संघर्ष

  3. SQL सर्वर में एक स्ट्रिंग में प्रत्येक शब्द के पहले अक्षर को कैपिटलाइज़ करने का सबसे अच्छा तरीका क्या है

  4. क्या MS-SQL AND/OR सशर्त है (शॉर्ट-सर्किट मूल्यांकन करें)?

  5. महीने/वर्ष तालिका बनाने का बेहतर तरीका