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

MySQL जहां क्लॉज के साथ जुड़ता है

आपको इसे join . में डालना होगा खंड, न कि where :

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON 
    user_category_subscriptions.category_id = categories.category_id
    and user_category_subscriptions.user_id =1

देखें, एक inner join . के साथ , join . में एक क्लॉज डालकर या where समकक्ष है। हालांकि, outer join . के साथ , वे बहुत अलग हैं।

join . के रूप में शर्त, आप उस रोसेट को निर्दिष्ट करते हैं जिसे आप तालिका में शामिल करेंगे। इसका मतलब है कि यह user_id = 1 . का मूल्यांकन करता है सबसे पहले, और user_category_subscriptions . का सबसेट लेता है user_id . के साथ का 1 categories . में सभी पंक्तियों में शामिल होने के लिए . यह आपको categories . में सभी पंक्तियाँ देगा , जबकि केवल categories कि इस विशेष उपयोगकर्ता ने सदस्यता ली है, उसके पास user_category_subscriptions में कोई भी जानकारी होगी स्तंभ। बेशक, अन्य सभी categories null with से भर जाएगा user_category_subscriptions . में कॉलम।

इसके विपरीत, एक where खंड शामिल होता है, और फिर रोसेट को कम करता है। तो, यह सभी जॉइन करता है और फिर उन सभी पंक्तियों को हटा देता है जहां user_id 1 के बराबर नहीं है . आपके पास inner join . प्राप्त करने का एक अक्षम तरीका है ।

उम्मीद है कि यह मदद करता है!



  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. MySQL का उपयोग करने के लिए Django की स्थापना

  4. MySqlCommand Command.Parameters.Add अप्रचलित है

  5. पीएचपी पीडीओ और MySQLi