Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL सबक्वेरी को LEFT JOIN में कैसे बदलें?

कुछ सबक्वेरी (विशेषकर NOT IN टाइप) को LEFT JOIN में बदलकर बेहतर प्रदर्शन और NULL हैंडलिंग प्राप्त कर सकते हैं।

उदाहरण टेबल्स:

-- customers
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+

-- reserve
+------+------------+
| ID   | Day        |
+------+------------+
| 1    | 2017-12-30 |
| 2    | 2017-12-28 |
| 2    | 2017-12-25 |
| 1    | 2017-12-24 |
| 3    | 2017-12-26 |
+------+------------+

मूल सबक्वेरी - बुकिंग न करने वाले ग्राहक:

mysql> Select Name from customers 
    -> where customer_id NOT IN (Select id From reserve);
+----------+
| Name     |
+----------+
| Virender |
+----------+

LEFT JOIN में रूपांतरण चरण:

  1. सबक्वेरी की टेबल (Reserve) को FROM क्लॉज में लाएं और LEFT JOIN करें
  2. WHERE क्लॉज के IN एक्सप्रेशन को दोनों टेबल के ID कॉलम की सीधी तुलना में बदलें
  3. WHERE में Reserve टेबल के कॉलम IS NULL शर्त जोड़ें

परिवर्तित क्वेरी:

mysql> SELECT Name from customers 
    -> LEFT JOIN reserve ON customer_id = Id 
    -> WHERE Id IS NULL;
+----------+
| Name     |
+----------+
| Virender |
+----------+
1 row in set (0.00 sec)

क्यों LEFT JOIN बेहतर?

  • NOT IN NULL मानों के साथ अप्रत्याशित व्यवहार करता है (यदि सबक्वेरी NULL लौटाए तो कोई परिणाम नहीं)
  • LEFT JOIN ... WHERE ... IS NULL NULL-सेफ है
  • अक्सर बेहतर क्वेरी प्लान और इंडेक्स उपयोग
  • एंटी-जॉइन पैटर्न का मानक SQL तरीका

नोट: NOT IN के बजाय NOT EXISTS भी अच्छा विकल्प है (NULL-सेफ और अक्सर तेज)।

  1. - Python Named Tuple को Dictionary में कैसे बदलें?

    Python Named Tuple को Dictionary में बदलना Namedtuple क्लास collections मॉड्यूल में परिभाषित है। यह एक नया टपल सबक्लास लौटाता है। नया सबक्लास टपल-जैसे ऑब्जेक्ट्स बनाने के लिए उपयोग किया जाता है जिनमें फ़ील्ड्स होते हैं जो एट्रिब्यूट लुकअप द्वारा एक्सेसिबल होते हैं साथ ही इंडेक्सेबल और इटरेबल भी होत

  1. - Python टपल को स्ट्रिंग में कैसे बदलें?

    स्ट्रिंग ऑब्जेक्ट्स के टपल को एक सिंगल स्ट्रिंग में बदलने के लिए, आप `join()` फंक्शन का उपयोग कर सकते हैं। सुनिश्चित करें कि टारगेट स्ट्रिंग खाली स्ट्रिंग से इनिशियलाइज़्ड है। >>> T1 = 1, 2, 3 >>> s = .join(T1) >>> s 123

  1. - पायथन में कैरेक्टर्स की सूची को स्ट्रिंग में कैसे बदलें?

    पायथन में एक बिल्ट-इन join() फ़ंक्शन होता है जो सीक्वेंस ऑब्जेक्ट में एलिमेंट्स को जोड़कर और उनके बीच सेपरेटर डालकर एक स्ट्रिंग वापस करता है। यदि हमें बिना किसी सेपरेटर के स्ट्रिंग चाहिए, तो हम इसे नल स्ट्रिंग से इनिशियलाइज़ करते हैं। >>> lst = [h, e, l, l, o] >>> str = >>&