sql जॉइन और इनर जॉइन के बीच अंतर




sql-server join (6)

वे कार्यात्मक रूप से समकक्ष हैं, लेकिन INNER JOIN पढ़ने के लिए थोड़ा स्पष्ट हो सकता है, खासकर यदि क्वेरी में अन्य शामिल प्रकार हैं (यानी LEFT या RIGHT या CROSS ) इसमें शामिल है।

इन दोनों में शामिल होने से मुझे वही परिणाम मिलेंगे:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

बनाम

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

प्रदर्शन में बयान के बीच कोई अंतर है या अन्यथा?

क्या यह विभिन्न एसक्यूएल कार्यान्वयन के बीच भिन्न है?


इसी तरह OUTER JOINs शब्द "OUTER" OUTER JOINs "OUTER" वैकल्पिक है, इसका LEFT या RIGHT कीवर्ड जो JOIN को "OUTER" JOIN बनाता है।

हालांकि किसी कारण से मैं हमेशा "OUTER" उपयोग LEFT OUTER JOIN हूं और कभी भी LEFT JOIN नहीं जाता, लेकिन मैं कभी भी INNER JOIN उपयोग नहीं करता बल्कि मैं "JOIN"

SELECT ColA, ColB, ...
FROM MyTable AS T1
     JOIN MyOtherTable AS T2
         ON T2.ID = T1.ID
     LEFT OUTER JOIN MyOptionalTable AS T3
         ON T3.ID = T1.ID

अंदरूनी जॉइन = जॉइन :

इनइन जॉइन डिफ़ॉल्ट है यदि आप जॉइन शब्द का उपयोग करते समय टाइप निर्दिष्ट नहीं करते हैं

आप बाएं बाहरी जॉइन या दाएं बाहरी जॉइन का भी उपयोग कर सकते हैं, इस मामले में शब्द बाहरी वैकल्पिक है, या आप क्रॉस जॉइन निर्दिष्ट कर सकते हैं।

या

एक आंतरिक शामिल होने के लिए, वाक्यविन्यास है:

चुनते हैं ...
टेबलए से
[INNER] टेबलबी में शामिल हों

(दूसरे शब्दों में, "INNER" कीवर्ड वैकल्पिक है - परिणाम इसके साथ या इसके बिना समान हैं)


जैसा कि अन्य उत्तरों पहले से ही बताते हैं कि आपके उदाहरण में कोई अंतर नहीं है।

व्याकरण का प्रासंगिक बिट यहां दस्तावेज किया गया है

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

दिखा रहा है कि सभी वैकल्पिक हैं। पृष्ठ आगे बताता है कि

INNER निर्दिष्ट करता है पंक्तियों के सभी मिलान जोड़े वापस आते हैं। दोनों तालिकाओं से बेजोड़ पंक्तियों को छोड़ दें। जब कोई जुड़ने का प्रकार निर्दिष्ट नहीं होता है, तो यह डिफ़ॉल्ट होता है

व्याकरण यह भी इंगित करता है कि एक ऐसा समय है जहां INNER की आवश्यकता है। एक संकेत संकेत निर्दिष्ट करते समय।

नीचे उदाहरण देखें

CREATE TABLE T1(X INT);
CREATE TABLE T2(Y INT);

SELECT *
FROM   T1
       LOOP JOIN T2
         ON X = Y;

SELECT *
FROM   T1
       INNER LOOP JOIN T2
         ON X = Y;


क्या यह विभिन्न एसक्यूएल कार्यान्वयन के बीच भिन्न है?

हां, एमएस एक्सेस सिर्फ join इजाजत नहीं देता है, join inner join आवश्यक है।


बस JOIN टाइपिंग डिफ़ॉल्ट रूप से एक INNER JOIN JOIN निष्पादित करता है।

अन्य सभी के लिए, एक तस्वीर कभी-कभी सैकड़ों शब्दों से अधिक मूल्यवान होती है:

CodeProject की छवि सौजन्य







inner-join