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

sql वेन आरेख के रूप में जुड़ता है

मैं यहां वेन आरेखों की सीमाओं के बारे में कैड से सहमत हूं। एक अधिक उपयुक्त दृश्य प्रतिनिधित्व यह हो सकता है।

टेबल्स

एक क्रॉस जॉइन बी से ए.रंग, बी.रंग चुनें SQL Fiddle

क्रॉस जॉइन (या कार्टेशियन उत्पाद) दो तालिकाओं से पंक्तियों के प्रत्येक संयोजन के साथ परिणाम उत्पन्न करता है। प्रत्येक तालिका में 4 पंक्तियाँ होती हैं इसलिए यह परिणाम में 16 पंक्तियाँ उत्पन्न करता है।

A.Color, B.Colour from A Inner Join B on A.Color =B.Color चुनें एसक्यूएल फिडल

इनर जॉइन तार्किक रूप से क्रॉस जॉइन की सभी पंक्तियों को लौटाता है जो जॉइन कंडीशन से मेल खाते हैं। इस मामले में पांच करते हैं।

अंदर से A.रंग, B.रंग चुनें A पर शामिल हों B.रंग नहीं ('हरा', 'नीला') एसक्यूएल फिडल

जरूरी नहीं कि इनर जॉइन कंडीशन एक समानता की स्थिति हो और इसके लिए टेबल के दोनों (या यहां तक ​​कि) से कॉलम को संदर्भित करने की आवश्यकता नहीं है। मूल्यांकन A.Colour NOT IN ('Green','Blue') क्रॉस की प्रत्येक पंक्ति पर रिटर्न में शामिल हों।

1=1 . की आंतरिक जुड़ाव शर्त क्रॉस जॉइन में प्रत्येक पंक्ति के लिए सत्य का मूल्यांकन करेगा ताकि दोनों समतुल्य हों (SQL Fiddle )।

एक बाएं बाहरी से ए रंग चुनें /d41d8/1684">एसक्यूएल फिडल

आउटर जॉइन का तार्किक रूप से मूल्यांकन उसी तरह किया जाता है जैसे कि इनर जॉइन करता है, सिवाय इसके कि यदि लेफ्ट टेबल की एक पंक्ति (लेफ्ट जॉइन के लिए) राइट हैंड टेबल से किसी भी पंक्ति के साथ नहीं जुड़ती है तो यह NULL दाहिने हाथ के स्तंभों के लिए मान।

एक बाएं बाहरी से ए रंग चुनें .com/#!6/d41d8/1685">एसक्यूएल फिडल

यह केवल पिछले परिणाम को केवल उन पंक्तियों को वापस करने के लिए प्रतिबंधित करता है जहां B.Colour IS NULL . है . इस विशेष मामले में ये वे पंक्तियाँ होंगी जिन्हें संरक्षित किया गया था क्योंकि उनका दाहिने हाथ की तालिका में कोई मेल नहीं था और क्वेरी तालिका में मेल नहीं खाने वाली एकल लाल पंक्ति लौटाती है B . इसे एंटी सेमी जॉइन के रूप में जाना जाता है।

IS NULL . के लिए एक कॉलम चुनना महत्वपूर्ण है परीक्षण जो या तो अशक्त नहीं है या जिसके लिए शामिल होने की स्थिति सुनिश्चित करती है कि कोई भी NULL इस पैटर्न के सही ढंग से काम करने के लिए मानों को बाहर रखा जाएगा और केवल उन पंक्तियों को वापस लाने से बचें जिनमें NULL है मेल न खाने वाली पंक्तियों के अतिरिक्त उस कॉलम के लिए मान।

एक दाएं बाहरी से ए रंग, बी.रंग चुनें ए पर बी शामिल हों। रंग =बी.रंग एसक्यूएल फिडल

दायां बाहरी जोड़ बाएं बाहरी जोड़ के समान कार्य करता है, सिवाय इसके कि वे दाएं तालिका से गैर-मिलान वाली पंक्तियों को संरक्षित करते हैं और बाएं हाथ के स्तंभों का विस्तार करते हैं।

A.Color, B.Colour from a Full OUTER JOIN B on A.Color =B.Colour चुनें एसक्यूएल फिडल

पूर्ण बाहरी जोड़ बाएँ और दाएँ जुड़ने के व्यवहार को मिलाते हैं और बाएँ और दाएँ दोनों तालिकाओं से मेल न खाने वाली पंक्तियों को संरक्षित करते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubuntu 8.04 (हार्डी) पर MySQL रिलेशनल डेटाबेस का उपयोग करें

  2. PHP और MySQL डेटाबेस का उपयोग करके पूर्ण उपयोगकर्ता पंजीकरण प्रणाली

  3. विंडोज़ xampp पर lower_case_table_names=2 का मान कहाँ बदलें?

  4. MySQL से अंतिम N पंक्तियों का चयन करें

  5. मैं कैसे तय करूं कि कब दाएं जॉइन/लेफ्ट जॉइन या इनर जॉइन का उपयोग करना है या यह कैसे निर्धारित करना है कि कौन सी टेबल किस तरफ है?