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

इनर जॉइन कंडीशन WHERE क्लॉज या ON क्लॉज में?

इस तरह के आंतरिक जुड़ने के लिए वे तार्किक रूप से समकक्ष हैं। हालांकि, आप उन स्थितियों में भाग ले सकते हैं जहां जॉइन क्लॉज में एक शर्त का अर्थ है जहां क्लॉज की स्थिति से कुछ अलग है।

एक साधारण उदाहरण के रूप में, कल्पना कीजिए कि आप इस तरह से एक लेफ्ट जॉइन करते हैं;

select x.id
from x
       left join y
         on x.id = y.id
;

यहाँ हम x से सभी पंक्तियाँ ले रहे हैं, भले ही y में कोई मिलान आईडी हो या नहीं। अब मान लें कि हमारे शामिल होने की स्थिति बढ़ रही है - हम न केवल y में id के आधार पर बल्कि id_type पर भी मैचों की तलाश कर रहे हैं।

select x.id
from x
       left join y
         on x.id = y.id
         and y.id_type = 'some type'
;

फिर से यह सभी पंक्तियों को x में देता है, भले ही y में कोई मिलान (id, id_type) हो।

हालांकि यह बहुत अलग है:

select x.id
from x
       left join y
         on x.id = y.id
where y.id_type = 'some type'
;

इस स्थिति में, हम x की सभी पंक्तियों को चुन रहे हैं और y से पंक्तियों से मिलान करने का प्रयास कर रहे हैं। अब उन पंक्तियों के लिए जिनके लिए y में कोई मेल नहीं है, y.id_type शून्य होगा। उसके कारण, y.id_type ='some type' संतुष्ट नहीं है, इसलिए उन पंक्तियों को छोड़ दिया जाता है जिनमें कोई मिलान नहीं होता है, जो इसे प्रभावी रूप से एक आंतरिक जुड़ाव में बदल देता है।

लंबी कहानी छोटी:इनर जॉइन के लिए यह मायने नहीं रखता कि परिस्थितियां कहां जाती हैं, लेकिन बाहरी जॉइन के लिए यह हो सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फेसबुक टोकन स्टोर करने के लिए किस प्रकार का फ़ील्ड?

  2. MySQL UTF8 विंडोज निर्यात - लिनक्स आयात

  3. ORDER BY, LIMIT और एकाधिक तालिकाओं के साथ अद्यतन सिंटेक्स

  4. पंडों 0.20.2 to_sql () MySQL का उपयोग कर

  5. MySQL में utf8 टूटे हुए वर्णों का पता लगाना