डिफ़ॉल्ट MySQL JOIN व्यवहार, INNER या OUTER क्या है?


91

इसलिए मैं आखिरी घंटे में इंटरनेट के माध्यम से देख रहा हूं, पढ़ रहा हूं और इस सरल प्रश्न के निश्चित उत्तर की तलाश कर रहा हूं।

MySQL में डिफ़ॉल्ट JOIN क्या है?

SELECT * FROM t1 JOIN t2

क्या ऐसा ही है

SELECT * FROM t1, t2

OR

SELECT * FROM t1 INNER JOIN t2

एक संबंधित प्रश्न, जब आप "WHERE" क्लॉज़ का उपयोग करते हैं, तो क्या यह JOIN या INNER JOIN के समान है?

अभी मैं सोच रहा हूं कि स्टैंड-अलोन JOIN कॉमा और WHERE क्लॉस का उपयोग करने के समान है।

जवाबों:


124

MySQL में JOINअयोग्य अंक लिखना INNER JOIN। दूसरे शब्दों INNERमें INNER JOIN, वैकल्पिक है। INNERऔर CROSSMySQL में पर्यायवाची हैं। स्पष्टता के लिए मैं लिखता हूं JOINया INNER JOINयदि मेरी कोई शर्त है और CROSS JOINयदि मेरी कोई शर्त नहीं है।

दस्तावेज़ों में जुड़ने के लिए अनुमत सिंटैक्स का वर्णन किया गया है


अभी मैं सोच रहा हूं कि स्टैंड-अलोन JOIN कॉमा और WHERE क्लॉज़ का उपयोग करने के लिए (समान) से अधिक कुछ नहीं है।


प्रभाव समान है, लेकिन उनके पीछे का इतिहास अलग है। अल्पविराम वाक्य रचना ANSI-89 मानक से है। हालांकि इस सिंटैक्स के साथ कई समस्याएं हैं इसलिए ANSI-92 मानक में JOIN कीवर्ड पेश किया गया था।

मैं दृढ़ता से अनुशंसा करूंगा कि आप हमेशा कॉमा के बजाय जॉय सिंटैक्स का उपयोग करें।

  • T1 JOIN T2 ON ...से अधिक पठनीय है T1, T2 WHERE ...
  • यह अधिक बनाए रखने योग्य है क्योंकि तालिका संबंधों और फ़िल्टर को एक साथ मिश्रित करने के बजाय स्पष्ट रूप से परिभाषित किया गया है।
  • JOIN सिंटैक्स को कॉमा सिंटैक्स की तुलना में OUTER JOIN में बदलना आसान है।
  • एक ही कथन में अल्पविराम और JOIN सिंटैक्स को मिलाने से पूर्ववर्ती नियमों के कारण उत्सुक त्रुटियां हो सकती हैं।
  • जोइन सिंटेक्स का उपयोग करते समय गलती से कार्टिसियन उत्पाद बनाने की संभावना कम है, क्योंकि भूल गए क्लॉज के कारण जॉइन सिंटैक्स का उपयोग किया जाता है, क्योंकि जॉइन क्लॉज को जॉन्स के बगल में लिखा जाता है और यह देखना आसान है कि क्या कोई गायब है।

स्वीट, मेरे लिए इस सरल प्रश्न को स्पष्ट करने के लिए धन्यवाद :) अतीत में मैंने हमेशा कॉमा + का उपयोग किया है जहां क्लॉस होता है ... लेकिन आपकी सलाह के अनुसार जॉइन का उपयोग करने के लिए परिवर्तित हो जाएगा। धन्यवाद
क्वांग वैन

हे मार्क, जोइन और कॉमा के मिश्रणों से आपका क्या मतलब है। इस तरह से प्रश्नों को मिलाएं, SELECT * F1 से t1 LEFT JOIN (t2, t3, t4) ON (t2.a = t1.a और t3.b = t1.b AND t4.c = t1.c)?
क्वांग वान

2
@ क्यूंग: यह उदाहरण के लिए असफल हो जाएगा:SELECT * FROM t1, t2 JOIN t3 ON t1.x=t3.y WHERE t1.a = t2.b
मार्क बायर्स

0

ये सभी समान हैं, और इसके बराबर भी हैं CROSS JOIN

कॉमा और [INNER | CROSS] JOINसिंटैक्स का उपयोग करने के बीच कुछ अंतर हैं , जो अधिक तालिकाओं में शामिल होने पर महत्वपूर्ण हो सकते हैं। बहुत ज्यादा आप सभी को पता करने की जरूरत है यहाँ MySQL JOINप्रलेखन में वर्णित है ।


1
^ --- सवाल का जवाब जोइन (स्टैंडअलोन) है जो मूल रूप से INNER और अल्पविराम + के लिए एक ही चीज है जहां क्लॉस होता है
Quang Van
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.