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