इसे समझने के लिए हम निम्नलिखित तालिकाओं के डेटा का उपयोग कर रहे हैं -
mysql> Select * from customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ 4 rows in set (0.00 sec) mysql> Select * from reserve; +------+------------+ | ID | Day | +------+------------+ | 1 | 2017-12-30 | | 2 | 2017-12-28 | | 2 | 2017-12-25 | | 1 | 2017-12-24 | | 3 | 2017-12-26 | +------+------------+ 5 rows in set (0.00 sec)
अब, निम्नलिखित एक सबक्वेरी है जिसमें उन सभी ग्राहकों के नाम मिलेंगे जिन्होंने कार आरक्षित की है।
mysql> Select Name from customers WHERE customer_id IN (Select id from reserve); +----------+ | Name | +----------+ | Rahul | | Yashpal | | Gaurav | +----------+ 3 rows in set (0.00 sec)
अब, निम्नलिखित चरणों की सहायता से, हम उपरोक्त सबक्वेरी को इनर जॉइन में बदल सकते हैं -
-
सबक्वेरी में नामित 'रिजर्व' टेबल को FROM क्लॉज में ले जाएं।
-
WHERE क्लॉज ग्राहक_आईडी कॉलम की तुलना सबक्वेरी से लौटाए गए आईडी से करता है।
इसलिए अभिव्यक्ति को दो तालिकाओं के आईडी कॉलम के बीच एक स्पष्ट प्रत्यक्ष तुलना में परिवर्तित करें।
mysql> SELECT Name from customers, reserve WHERE customer_id = id; +----------+ | Name | +----------+ | Rahul | | Yashpal | | Yashpal | | Rahul | | Gaurav | +----------+ 5 rows in set (0.00 sec)
जैसा कि हम देख सकते हैं कि उपरोक्त परिणाम सबक्वेरी के परिणाम के समान नहीं है, इसलिए समान परिणाम प्राप्त करने के लिए DISTINCT कीवर्ड का उपयोग करें:
mysql> SELECT DISTINCT name from customers,reserve WHERE customer_id = id; +----------+ | Name | +----------+ | Rahul | | Yashpal | | Gaurav | +----------+ 3 rows in set (0.03 sec)