समस्या:
आप MySQL में सेट किए गए परिणाम में पंक्तियों की संख्या को सीमित करना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में student
कॉलम में डेटा के साथ id
, first_name
, last_name
, और age
।
आईडी | <थ>पहला_नामlast_name | उम्र | |
---|---|---|---|
1 | स्टीवन | वाटसन | 25 |
2 | लिसा | एंडरसन | 19 |
3 | एलिस | मिलर | 19 |
4 | मैरी | भूरा | 25 |
5 | लुसी | वाटसन | 25 |
6 | माइकल | जैक्सन | 22 |
आइए छात्रों के पूरे नाम और उम्र का चयन करें, लेकिन वापस आने वाली पंक्तियों को तीन तक सीमित करें।
समाधान:
SELECT first_name, last_name, age FROM student LIMIT 3;
ये रहा क्वेरी का नतीजा:
आईडी | <थ>पहला_नामlast_name | उम्र | |
---|---|---|---|
1 | स्टीवन | वाटसन | 25 |
2 | लिसा | एंडरसन | 19 |
3 | एलिस | मिलर | 19 |
चर्चा:
LIMIT क्लॉज परिणाम सेट में पंक्तियों की संख्या को सीमित करता है। इसका उपयोग सेलेक्ट स्टेटमेंट में किया जाता है, आमतौर पर स्टेटमेंट के अंत में। (यहां तक कि ORDER BY को LIMIT से पहले सूचीबद्ध किया जाना चाहिए।)
केवल आवश्यक तर्क प्रदर्शित करने के लिए पंक्तियों की संख्या है। हमारे उदाहरण में, LIMIT 3 ने तीन पंक्तियों वाला एक परिणाम सेट तैयार किया। जब तक आप OFFSET तर्क के साथ अन्यथा निर्दिष्ट नहीं करते हैं, यह फ़ंक्शन हमेशा पहला n . लौटाएगा पंक्तियाँ जो क्वेरी आवश्यकताओं को पूरा करती हैं।
LIMIT का वैकल्पिक OFFSET तर्क लौटाई गई पंक्तियों की संख्या को इंगित करने वाले तर्क से पहले रखा गया है। यह LIMIT द्वारा लौटाई गई पहली पंक्ति की स्थिति को इंगित करता है (अर्थात '0' पहली पंक्ति है, 1 दूसरी पंक्ति है, आदि)। ऑफ़सेट और पंक्तियों की संख्या को अल्पविराम द्वारा अलग किया जाता है।
क्वेरी पिछली क्वेरी के समान रिकॉर्ड लौटाती है क्योंकि ऑफ़सेट शून्य है। (शून्य डिफ़ॉल्ट ऑफ़सेट मान है।)
SELECT first_name, last_name, age FROM student LIMIT 0, 3;
इन प्रश्नों में, परिणाम पंक्तियाँ अनियंत्रित हैं। यदि आप क्रमबद्ध परिणाम सेट से तीन पंक्तियों का चयन करना चाहते हैं, तो ORDER BY का उपयोग करें:
SELECT first_name, last_name, age FROM student ORDER BY age DESC, last_name, first_name LIMIT 1,3;
यहां, हम पहले पंक्तियों को आयु (अवरोही), फिर अंतिम नाम, फिर प्रथम नाम के आधार पर क्रमित कर रहे हैं। हम दूसरी लौटाई गई पंक्ति पर शुरू करने के लिए ऑफ़सेट मान का उपयोग करते हैं और परिणामों को तीन पंक्तियों तक सीमित करते हैं:
last_name | उम्र | |
---|---|---|
लुसी | वाटसन | 25 |
स्टीवन | वाटसन | 25 |
माइकल | जैक्सन | 22 |
यह क्वेरी पहले आयु कॉलम के अनुसार अवरोही क्रम में पंक्तियों को क्रमबद्ध करती है। इसके बाद यह last_name
. के अनुसार क्रमित करता है और first_name
बढ़ते क्रम में। यदि आप तालिका को देखते हैं, तो आप देखेंगे कि सबसे पुराने छात्र (स्टीवन, लुसी, मैरी) 25 वर्ष के हैं। हालाँकि, मैरी को छोड़ दिया गया है क्योंकि वह पहली पंक्ति है और ऑफ़सेट 1 है (यानी हम दूसरी पंक्ति से शुरू कर रहे हैं)। लुसी अब पहले हैं क्योंकि उनका पहला नाम स्टीवन से पहले आता है। (स्टीवन और लुसी का उपनाम एक ही है, इसलिए उनका क्रम पहले नाम से निर्धारित होता है।) माइकल 22 वर्ष का है, जो उसे अगला सबसे बड़ा छात्र बनाता है और तीन पंक्तियों में से अंतिम वापस आ जाता है।