एक SQL सबक्वेरी एक क्वेरी के अंदर दूसरी क्वेरी होती है। इसका उपयोग SQL स्टेटमेंट के WHERE या HAVING क्लॉज में किया जाता है। सबक्वेरी आपको एक क्वेरी के परिणाम को दूसरी क्वेरी में तर्क के रूप में निर्दिष्ट करने देती है।
जब आप एक SQL क्वेरी लिख रहे होते हैं, तो आप किसी अन्य क्वेरी के परिणाम के आधार पर एक पैरामीटर निर्दिष्ट करना चाह सकते हैं। उदाहरण के लिए, मान लीजिए आपके पास ग्राहकों की एक सूची है। आप उन ग्राहकों की सूची प्राप्त करना चाह सकते हैं जिन्होंने एक निश्चित राशि से अधिक मूल्य के ऑर्डर दिए हैं। ऑर्डर और ग्राहक जानकारी अलग-अलग टेबल में संग्रहीत है।
यहीं SQL सबक्वेरी ऑपरेशन काम आता है। सबक्वेरी, जिन्हें नेस्टेड क्वेरी के रूप में भी जाना जाता है, WHERE क्लॉज के भीतर SELECT क्वेरी होती हैं। मुख्य SQL क्वेरी फिर सबक्वेरी के परिणाम का उपयोग करती है।
इस ट्यूटोरियल में, हम कुछ उदाहरणों के संदर्भ में SQL में सबक्वेरी का उपयोग करने पर चर्चा करने जा रहे हैं।
SQL सबक्वेरी: एक गाइड
एक SQL सबक्वेरी एक क्वेरी के भीतर दूसरी क्वेरी होती है। उनका उपयोग एक क्वेरी चलाने के लिए किया जाता है जो दूसरी क्वेरी के परिणामों पर निर्भर करती है। सबक्वेरी आपको दो अलग-अलग क्वेरी लिखने और परिणामों को कॉपी-पेस्ट किए बिना ऐसा करने देती हैं। सबक्वेरी WHERE या HAVING क्लॉज में प्रकट होती हैं।
यहां SQL SELECT स्टेटमेंट में सबक्वेरी के लिए सिंटैक्स है:
SELECT name FROM products WHERE supplier_id IN (SELECT id FROM suppliers WHERE local = True);
यह क्वेरी स्थानीय कंपनी द्वारा आपूर्ति किए गए सभी उत्पादों का नाम चुनती है। हम SQL IN स्टेटमेंट के इनपुट के रूप में एक सबक्वेरी का उपयोग करते हैं। SQL IN स्टेटमेंट "products" टेबल से उन सभी रिकॉर्ड्स को लौटाता है जहां supplier_id हमारी सबक्वेरी के परिणामों में है।
हम INSERT, UPDATE, और DELETE स्टेटमेंट में सबक्वेरी का उपयोग कर सकते हैं।
एक सबक्वेरी को पैरेंथेसिस में प्रकट होना चाहिए। यह एक सबक्वेरी के अंदर को दूसरी सबक्वेरी से अलग करता है।
आपको यह सुनिश्चित करना चाहिए कि आप अपनी सबक्वेरी में प्रासंगिक डेटा चुनें। उपरोक्त सबक्वेरी में, हमने suppliers टेबल से id चुना। यदि हमने कोई अन्य कॉलम चुना होता, तो हमारी क्वेरी काम नहीं करती। ऐसा इसलिए है क्योंकि हमारी मुख्य क्वेरी सप्लायर ID पर निर्भर करती है।
SQL सबक्वेरी उदाहरण: SELECT
मान लीजिए कि आप उन छात्रों की सूची प्राप्त करना चाहते हैं जो ऑनर रोल पर थे, आप सबक्वेरी का उपयोग कर सकते हैं। यह मानता है कि ऑनर रोल की जानकारी दूसरी टेबल में है।
आइए SQL सबक्वेरी कैसे काम करती है, यह दिखाने के लिए एक उदाहरण का उपयोग करें। निम्न क्वेरी $200 से अधिक मूल्य का ऑर्डर देने वाले सभी ग्राहकों की सूची लौटाएगी:
SELECT * FROM customers WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);
हमारी सबक्वेरी निम्नलिखित लौटाती है:
| name | address | loyalty_plan | id | |
| Katy | katy.l@gmail.com | Mountain View, CA | None | 4 |
| John | john.p@outlook.com | Boston, MA | None | 1 |
(2 पंक्तियाँ)
पहली लाइन पर, हम अपने customers टेबल से हर कॉलम का चयन करते हैं। फिर, हम निर्दिष्ट करते हैं कि हम केवल उन ग्राहकों को प्राप्त करना चाहते हैं जिनका ग्राहक ID एक सबक्वेरी में है। हमारी सबक्वेरी हमारे orders टेबल से सभी अद्वितीय ग्राहक IDs का चयन करती है जहां आइटम की लागत $200 से अधिक थी। इन शर्तों से मेल खाने वाले रिकॉर्ड्स में उन ग्राहकों को परिणामों में शामिल किया जाता है।
SQL सबक्वेरी: INSERT
हम उन सभी ग्राहकों के रिकॉर्ड डालना चाहते हैं जिन्होंने $200 से अधिक की खरीदारी की है, high_value_customers नामक टेबल में। ऐसा करने के लिए, हम SQL सबक्वेरी और SQL INSERT कमांड का उपयोग कर सकते हैं:
INSERT INTO high_value_customers SELECT * FROM customers WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);
यदि हम अपनी high_value_customers टेबल को क्वेरी करते हैं, तो हम अपने सभी उच्च मूल्य वाले ग्राहकों को एक टेबल में देख सकते हैं:
| name | address | loyalty_plan | id | |
| Katy | katy.l@gmail.com | Mountain View, CA | Gold | 4 |
| John | john.p@outlook.com | Boston, MA | None | 1 |
(2 पंक्तियाँ)
SQL सबक्वेरी: UPDATE
हम टेबल के भीतर डेटा अपडेट करने के लिए सबक्वेरी का उपयोग कर सकते हैं। उदाहरण के लिए, मान लीजिए कि हम उन सभी ग्राहकों की लॉयल्टी योजनाओं को अपडेट करना चाहते हैं जिन्होंने उच्च-मूल्य की खरीदारी की है, Bronze पर। हम उस ऑपरेशन को करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं:
UPDATE customers SET loyalty_plan = 'High Value' WHERE id IN (SELECT DISTINCT customer_id FROM orders WHERE cost > 200);
जब हम अपनी customers टेबल को क्वेरी करते हैं, तो हम देख सकते हैं कि हमारे दो उच्च मूल्य ग्राहकों की लॉयल्टी योजनाएं अपडेट हो गई हैं:
| name | address | loyalty_plan | id | |
| Katy | katy.l@gmail.com | Mountain View, CA | High Value | 4 |
| John | john.p@outlook.com | Boston, MA | High Value | 1 |
(2 पंक्तियाँ)
SQL सबक्वेरी: DELETE
आप SQL DELETE स्टेटमेंट के साथ सबक्वेरी का उपयोग टेबल में व्यक्तिगत या एकाधिक पंक्तियों को हटाने के लिए कर सकते हैं।
आइए एक कमांड लिखें जो उच्च मूल्य वाले ग्राहकों के ऑर्डर को हटा देता है, जिसे हम डेटाबेस में एक नई टेबल में ले गए थे। ऐसा करने के लिए, हमें सबक्वेरी पर निर्भर रहना होगा:
DELETE FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE loyalty_plan = 'High Value');
हम देख सकते हैं कि हमारे उच्च मूल्य वाले ग्राहकों के सभी ऑर्डर हटा दिए गए हैं। हमारी नेस्टेड सबक्वेरी लौटाती है:
| id | item_name | cost | customer_id |
| 5 | Oak Chair | 100 | 3 |
(1 पंक्ति)
निष्कर्ष
एक SQL सबक्वेरी एक क्वेरी के भीतर दूसरी क्वेरी होती है। सबक्वेरी आपको एक क्वेरी के परिणाम पर दूसरी क्वेरी में निर्भर रहने देती हैं। सबक्वेरी को SQL स्टेटमेंट के HAVING या WHERE क्लॉज में निर्दिष्ट किया जाता है।
सबक्वेरी एक क्वेरी चलाना आसान बनाती हैं जो दूसरी क्वेरी के परिणाम पर निर्भर करती है। इस गाइड में, हमने SQL सर्वर पर सबक्वेरी लिखने पर चर्चा की है। हमने SELECT, INSERT, UPDATE, और DELETE SQL स्टेटमेंट में सबक्वेरी का उपयोग करने के बारे में भी बात की।
क्या आप SQL में कोडिंग के बारे में अधिक सीखना चाहते हैं? हमारे How to Learn SQL गाइड को देखें। इस गाइड में SQL सीखने पर विशेषज्ञ सलाह है। आपको अपनी सीखने की यात्रा जारी रखने में मदद करने के लिए शीर्ष पाठ्यक्रमों की सूची भी मिलेगी।