एकल पंक्ति उप क्वेरी
एकल-पंक्ति सबक्वेरी का उपयोग तब किया जाता है जब बाहरी क्वेरी के परिणाम एकल, अज्ञात मान पर आधारित होते हैं। हालांकि इस क्वेरी प्रकार को औपचारिक रूप से "एकल-पंक्ति" कहा जाता है, नाम का अर्थ है कि क्वेरी कई कॉलम लौटाती है-लेकिन परिणामों की केवल एक पंक्ति। हालांकि, एक एकल-पंक्ति सबक्वेरी बाहरी क्वेरी में केवल एक कॉलम वाले परिणामों की केवल एक पंक्ति लौटा सकती है।
नीचे दिए गए SELECT क्वेरी में, आंतरिक MySQL केवल एक पंक्ति यानि कंपनी के लिए न्यूनतम वेतन देता है। बदले में, यह इस मूल्य का उपयोग सभी कर्मचारियों के वेतन की तुलना करने के लिए करता है और केवल उन लोगों को प्रदर्शित करता है, जिनका वेतन न्यूनतम वेतन के बराबर है।
SELECT first_name, salary, department_id FROM employees WHERE salary = (SELECT MIN (salary) FROM employees);
HAVING क्लॉज का उपयोग तब किया जाता है जब किसी शर्त के आधार पर किसी क्वेरी के समूह परिणामों को प्रतिबंधित करने की आवश्यकता होती है। अगर किसी सबक्वेरी के परिणाम की तुलना ग्रुप फंक्शन से की जानी चाहिए, तो आपको बाहरी क्वेरी के HAVING क्लॉज में आंतरिक क्वेरी को नेस्ट करना होगा।
SELECT department_id, MIN (salary) FROM employees GROUP BY department_id HAVING MIN (salary) < (SELECT AVG (salary) FROM employees)
एकाधिक पंक्ति उप क्वेरी
एकाधिक-पंक्ति उपश्रेणियाँ नेस्टेड क्वेरी हैं जो मूल क्वेरी में परिणामों की एक से अधिक पंक्तियाँ लौटा सकती हैं। बहु-पंक्ति उपश्रेणियों का उपयोग आमतौर पर WHERE और HAVING क्लॉज़ में किया जाता है। चूंकि यह कई पंक्तियों को लौटाता है, इसलिए इसे सेट तुलना ऑपरेटरों (IN, ALL, ANY) द्वारा नियंत्रित किया जाना चाहिए। जबकि IN ऑपरेटर का वही अर्थ होता है जैसा कि पिछले अध्याय में चर्चा की गई थी, कोई भी ऑपरेटर एक निर्दिष्ट मान की तुलना सबक्वेरी द्वारा लौटाए गए प्रत्येक मान से करता है। ALL एक मान की तुलना सबक्वेरी द्वारा लौटाए गए प्रत्येक मान से करता है। नीचे दी गई क्वेरी त्रुटि दिखाएगी क्योंकि सिंगल-पंक्ति सबक्वेरी कई पंक्तियों को लौटाती है।
SELECT first_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE LOCATION_ID = 100)