लिंक @Gratzy प्रदान किया गया मददगार है
ON क्लॉज और WHERE क्लॉज में शर्तों के बीच का अंतर निश्चित रूप से एक ग्रे है।
इनर जॉइन के लिए वे समकक्ष हैं। OUTER JOINS के लिए, आपकी समझ सही है कि ON कंडीशन के मूल्यांकन के बाद WHERE क्लॉज को अवधारणात्मक रूप से लागू किया जाता है।
लेकिन कई मामलों में अंतर कार्यक्षमता की तुलना में इरादे से अधिक नीचे है। ON शर्तों और WHERE क्लॉज़ के बीच अक्सर अर्थ संबंधी अंतर होता है।
उदाहरण के लिए, SQL सर्वर के पुराने संस्करणों ने वास्तव में WHERE क्लॉज में शर्तों का उपयोग करके ON सिंटैक्स को लागू किया, एक *=
को नियोजित किया। या =*
बाएँ या दाएँ जुड़ने का संकेत देने के लिए वाक्य रचना (जिसके कारण कुछ मामलों में अजीब तरह से अलग-अलग परिणाम LEFT और RIGHT JOIN समकक्ष बनते हैं)
सामान्य तौर पर, मेरी सलाह हमेशा ON क्लॉज में उपयुक्त कुंजी फ़ील्ड का उपयोग रिकॉर्ड्स को एक-दूसरे के साथ जोड़ने के तर्क के आधार पर रिकॉर्ड में शामिल होने के लिए होती है। फ़िल्टरिंग शर्तों को लागू करने के लिए WHERE क्लॉज़ का उपयोग करें जो इस परिणाम सेट को उत्तरोत्तर प्रतिबंधित करते हैं।