द्वारा आदेश MySQLउदाहरण सहित ASC और DESC क्वेरी
⚡ स्मार्ट सारांश
द्वारा आदेश MySQL ASC और DESC कीवर्ड का उपयोग करके क्वेरी परिणाम सेट को आरोही या अवरोही क्रम में सॉर्ट किया जाता है। नीचे दिए गए अनुभाग सिंटैक्स, एकल-स्तंभ और बहु-स्तंभ सॉर्टिंग, NULL प्लेसमेंट और myflixdb नमूना डेटाबेस पर निष्पादित उदाहरणों की व्याख्या करते हैं।

ORDER BY क्या है? MySQL?
MySQL द्वारा आदेश यह एक क्लॉज़ है जिसका उपयोग SELECT क्वेरी के साथ डेटा को व्यवस्थित तरीके से सॉर्ट करने के लिए किया जाता है। MySQL ORDER BY क्लॉज़ क्वेरी परिणाम सेट को आरोही या अवरोही क्रम में, एक कॉलम पर या एक साथ कई कॉलम पर सॉर्ट करता है।
जब SELECT कमांड का अकेले उपयोग किया जाता है, तो पंक्तियाँ उसी क्रम में वापस आती हैं जिस क्रम में स्टोरेज इंजन उन्हें पढ़ता है, जो कि एक निश्चित क्रम नहीं है। सॉर्टिंग का मतलब है उन पंक्तियों को एक निर्दिष्ट क्रम में व्यवस्थित करना। यह संख्यात्मक, स्ट्रिंग और दिनांक डेटा प्रकारों पर समान रूप से किया जा सकता है।
MySQL क्रमबद्ध करें
उदाहरण देखने से पहले, यह समझना उपयोगी होगा कि एक पूर्ण SELECT स्टेटमेंट के भीतर यह क्लॉज़ कहाँ स्थित है।
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
यहाँ
- "चयन कथन... " यह सामान्य सेलेक्ट क्वेरी है।
- ” | “ विकल्पों का प्रतिनिधित्व करता है।
- “[WHERE condition | GROUP BY `field_name(s)` HAVING condition]” यह क्वेरी परिणाम सेट को फ़िल्टर करने के लिए उपयोग की जाने वाली वैकल्पिक शर्त है।
- "द्वारा आदेश" यह क्वेरी परिणाम सेट की सॉर्टिंग करता है।
- “[आरोही | अवरोही]” यह कीवर्ड परिणाम सेट को आरोही या अवरोही क्रम में सॉर्ट करने के लिए उपयोग किया जाता है। ध्यान दें कि ASC डिफ़ॉल्ट है।
DESC और ASC कीवर्ड क्या हैं?
ORDER BY फ़ंक्शन ASC और DESC, इन दो सॉर्ट दिशाओं को स्वीकार करता है। नीचे दी गई तालिका उन डेटा प्रकारों के आधार पर इनकी तुलना करती है जिनका उपयोग आप अक्सर सॉर्ट करने के लिए करेंगे।
ASC आरोही का संक्षिप्त रूप है |
MySQL DESC अवरोही का संक्षिप्त रूप है |
|---|---|
| इसका उपयोग क्वेरी परिणामों को ऊपर से नीचे की शैली में क्रमबद्ध करने के लिए किया जाता है। | इसका उपयोग क्वेरी परिणामों को नीचे से ऊपर की ओर क्रमबद्ध करने के लिए किया जाता है। |
| दिनांक डेटा प्रकारों पर काम करते समय, सबसे प्रारंभिक दिनांक सूची में सबसे ऊपर दिखाई जाती है। | जब आप दिनांक डेटा प्रकारों पर काम कर रहे होते हैं, तो नवीनतम तिथि सूची के शीर्ष पर दिखाई देती है। |
| संख्यात्मक डेटा प्रकारों के साथ काम करते समय, सबसे कम मान सूची के शीर्ष पर दिखाए जाते हैं। | संख्यात्मक डेटा प्रकारों के साथ काम करते समय, उच्चतम मान क्वेरी परिणाम सेट के शीर्ष पर दिखाए जाते हैं। |
| स्ट्रिंग डेटा प्रकारों के साथ काम करते समय, क्वेरी परिणाम सेट को अक्षर A से शुरू होकर अक्षर Z तक क्रमबद्ध किया जाता है। | स्ट्रिंग डेटा प्रकारों के साथ कार्य करते समय, क्वेरी परिणाम सेट को अक्षर Z से शुरू होकर अक्षर A तक क्रमबद्ध किया जाता है। |
SQL के DESC और ASC दोनों कीवर्ड का उपयोग SELECT स्टेटमेंट के साथ किया जाता है। MySQL ORDER BY खंड.
DESC और ASC सिंटैक्स
SQL DESC sort कीवर्ड का मूल सिंटैक्स निम्नलिखित है।
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
यहाँ
- तालिकानाम से {fieldName(s) | *} का चयन करें यह वह कथन है जिसमें उन फ़ील्ड और तालिका (तालिकाओं) का उल्लेख है जिनसे परिणाम सेट प्राप्त किया जाना है।
- [जहां हालत] वैकल्पिक है लेकिन इसका उपयोग दी गई स्थिति के अनुसार डेटा को फ़िल्टर करने के लिए किया जा सकता है।
- फ़ील्डनाम(नामों) के आधार पर क्रमबद्ध करें यह अनिवार्य है और उस फ़ील्ड का नाम बताता है जिस पर सॉर्टिंग की जाती है। MySQL DESC कीवर्ड यह निर्दिष्ट करता है कि सॉर्टिंग अवरोही क्रम में है।
- [सीमा N] यह वैकल्पिक है, लेकिन इसका उपयोग क्वेरी परिणाम सेट से लौटाई गई पंक्तियों की संख्या को सीमित करने के लिए किया जा सकता है।
DESC और ASC का उपयोग क्यों करें? MySQL?
सिर्फ वाक्य संरचना जानना ही काफी नहीं है। ORDER BY फ़ंक्शन इसलिए मौजूद है क्योंकि डेटाबेस के लिए आसानी से तैयार किया गया परिणाम सेट किसी व्यक्ति के लिए पढ़ना हमेशा आसान नहीं होता।
मान लीजिए कि आप वीडियो लाइब्रेरी के किसी सदस्य के भुगतान का इतिहास प्रिंट करते हैं ताकि रिसेप्शन पर मौजूद कर्मचारी सवालों के जवाब जल्दी दे सकें। भुगतानों को कालानुक्रमिक रूप से घटते क्रम में प्रिंट करना कहीं अधिक तर्कसंगत है, जिसमें सबसे हालिया भुगतान से शुरू होकर सबसे पुराने भुगतान तक जाना शामिल है। SQL में DESC कीवर्ड इस स्थिति में बहुत उपयोगी साबित होता है, क्योंकि सूची को भुगतान की तारीख के आधार पर सॉर्ट किया जा सकता है।
मान लीजिए कि मार्केटिंग विभाग को श्रेणी के अनुसार फिल्मों की सूची चाहिए, ताकि सदस्य किराए पर लेने से पहले देख सकें कि पुस्तकालय में कौन-कौन सी फिल्में उपलब्ध हैं। श्रेणी के नामों और फिल्मों के शीर्षकों को आरोही क्रम में व्यवस्थित करने से सदस्यों को इंडेक्स की तरह ही जानकारी जल्दी से खोजने में मदद मिलती है। ASC कीवर्ड इसी उद्देश्य को पूरा करता है।
संक्षेप में, ORDER BY विधि कच्चे परिणाम सेट को रिपोर्ट में बदल देती है। आपके द्वारा चुना गया कीवर्ड इस बात पर निर्भर करता है कि पाठक क्या प्रश्न पूछ रहा है: हाल ही में क्या हुआ? DESC के लिए कॉल करता है, जबकि मुझे यह वस्तु कहाँ मिलेगी? एएससी के लिए आह्वान।
MySQL उदाहरण के अनुसार क्रमबद्ध करें
आगे दिए गए सभी उदाहरण myflixdb सैंपल डेटाबेस पर चलाए जाएंगे। शुरुआत अनसॉर्टेड मेंबर्स टेबल से करें, जो डिफ़ॉल्ट क्रम में वापस आती है।
SELECT * FROM members;
उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL myflixdb के विरुद्ध वर्कबेंच चलाने पर हमें नीचे दिखाए गए परिणाम प्राप्त होते हैं।
| सदस्यता_संख्या | पूरे नाम | लिंग | जन्म तिथि | भौतिक_पता | डाक का पता | संपर्क संख्या | ईमेल |
|---|---|---|---|---|---|---|---|
| 1 | जेनेट जोन्स | महिला | 21-07-1980 | फर्स्ट स्ट्रीट प्लॉट नं 4 | निजी बैग | 0759 253 542 | janetjones@yagoo.cm |
| 2 | जेनेट स्मिथ जोन्स | महिला | 23-06-1980 | मेलरोज़ 123 | नल | नल | jj@fstreet.com |
| 3 | रॉबर्ट फिल | नर | 12-07-1989 | तीसरी स्ट्रीट 3 | नल | 12345 | rm@tstreet.com |
| 4 | ग्लोरिया विलियम्स | महिला | 14-02-1984 | 2nd स्ट्रीट 23 | नल | नल | नल |
| 5 | लियोनार्ड हॉफस्टैटर | नर | नल | वुडक्रेस्ट | नल | 845738767 | नल |
| 6 | शेल्डन कूपर | नर | नल | वुडक्रेस्ट | नल | 976736763 | नल |
| 7 | राजेश कुथरापाली | नर | नल | वुडक्रेस्ट | नल | 938867763 | नल |
| 8 | लेस्ली विंकल | नर | 14-02-1984 | वुडक्रेस्ट | नल | 987636553 | नल |
| 9 | हावर्ड वोलोविट्ज़ | नर | 24-08-1981 | साउथ पार्क | पीओ Box 4563 | 987786553 | नल |
DESC का उपयोग करके अवरोही क्रम में सॉर्ट करना
मान लीजिए कि मार्केटिंग विभाग अपने सदस्यों की जानकारी को जन्मतिथि के घटते क्रम में व्यवस्थित करना चाहता है। इससे टीम को समय पर जन्मदिन की शुभकामनाएँ भेजने में मदद मिलती है। यह सूची नीचे दिए गए क्वेरी द्वारा तैयार की जाती है।
SELECT * FROM members ORDER BY date_of_birth DESC;
उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL myflixdb के विरुद्ध वर्कबेंच चलाने पर हमें नीचे दिखाए गए परिणाम प्राप्त होते हैं।
ASC विधि से आरोही क्रम में सॉर्ट करना
उसी क्वेरी को आरोही क्रम में रखने से केवल कीवर्ड की अदला-बदली हो जाती है।
SELECT * FROM members ORDER BY date_of_birth ASC;
नोट: NULL का अर्थ है कोई मान नहीं, जो शून्य या खाली स्ट्रिंग के समान नहीं है। दोनों स्क्रीनशॉट में देखें कि NULL तिथियों को किस प्रकार एक साथ समूहित किया गया है: MySQL यह NULL को अन्य सभी मानों से निम्न मानता है, इसलिए NULL वाली पंक्तियाँ ASC के अंतर्गत सबसे पहले और DESC के अंतर्गत सबसे अंत में दिखाई देती हैं।
किसी वस्तु को एकाधिक कॉलम के आधार पर कैसे सॉर्ट करें MySQL
किसी एक कॉलम के आधार पर सॉर्टिंग करने से सरल प्रश्नों के उत्तर मिल जाते हैं। रिपोर्टों में आमतौर पर क्रमबद्धता के दूसरे स्तर की आवश्यकता होती है, और ORDER BY फ़ंक्शन इसी उद्देश्य के लिए अल्पविराम से अलग किए गए फ़ील्ड की सूची स्वीकार करता है।
निम्नलिखित SQL सॉर्ट स्क्रिप्ट पर विचार करें जो बिना किसी स्पष्ट निर्देश के सभी सदस्य रिकॉर्ड को सूचीबद्ध करती है।
SELECT * FROM `members`;
उपरोक्त स्क्रिप्ट को निष्पादित करने से नीचे दिखाए गए निम्नलिखित परिणाम प्राप्त होते हैं।
| सदस्यता_संख्या | पूरे नाम | लिंग | जन्म तिथि | भौतिक_पता | डाक का पता | संपर्क संख्या | ईमेल |
|---|---|---|---|---|---|---|---|
| 1 | जेनेट जोन्स | महिला | 21-07-1980 | फर्स्ट स्ट्रीट प्लॉट नं 4 | निजी बैग | 0759 253 542 | janetjones@yagoo.cm |
| 2 | जेनेट स्मिथ जोन्स | महिला | 23-06-1980 | मेलरोज़ 123 | नल | नल | jj@fstreet.com |
| 3 | रॉबर्ट फिल | नर | 12-07-1989 | तीसरी स्ट्रीट 3 | नल | 12345 | rm@tstreet.com |
| 4 | ग्लोरिया विलियम्स | महिला | 14-02-1984 | 2nd स्ट्रीट 23 | नल | नल | नल |
| 5 | लियोनार्ड हॉफस्टैटर | नर | नल | वुडक्रेस्ट | नल | 845738767 | नल |
| 6 | शेल्डन कूपर | नर | नल | वुडक्रेस्ट | नल | 976736763 | नल |
| 7 | राजेश कुथरापाली | नर | नल | वुडक्रेस्ट | नल | 938867763 | नल |
| 8 | लेस्ली विंकल | नर | 14-02-1984 | वुडक्रेस्ट | नल | 987636553 | नल |
| 9 | हावर्ड वोलोविट्ज़ | नर | 24-08-1981 | साउथ पार्क | पीओ Box 4563 | 987786553 | नल |
किसी एक कॉलम को डिफ़ॉल्ट क्रम से सॉर्ट करना
मान लीजिए कि हमें एक ऐसी सूची चाहिए जो लिंग फ़ील्ड का उपयोग करके क्वेरी परिणाम सेट को क्रमबद्ध करे। नीचे दिया गया स्क्रिप्ट बिना किसी दिशा का नाम लिए ऐसा करता है।
SELECT * FROM `members` ORDER BY `gender`;
| सदस्यता_संख्या | पूरे नाम | लिंग | जन्म तिथि | भौतिक_पता | डाक का पता | संपर्क संख्या | ईमेल |
|---|---|---|---|---|---|---|---|
| 1 | जेनेट जोन्स | महिला | 21-07-1980 | फर्स्ट स्ट्रीट प्लॉट नं 4 | निजी बैग | 0759 253 542 | janetjones@yagoo.cm |
| 2 | जेनेट स्मिथ जोन्स | महिला | 23-06-1980 | मेलरोज़ 123 | नल | नल | jj@fstreet.com |
| 4 | ग्लोरिया विलियम्स | महिला | 14-02-1984 | 2nd स्ट्रीट 23 | नल | नल | नल |
| 3 | रॉबर्ट फिल | नर | 12-07-1989 | तीसरी स्ट्रीट 3 | नल | 12345 | rm@tstreet.com |
| 5 | लियोनार्ड हॉफस्टैटर | नर | नल | वुडक्रेस्ट | नल | 845738767 | नल |
| 6 | शेल्डन कूपर | नर | नल | वुडक्रेस्ट | नल | 976736763 | नल |
| 7 | राजेश कुथरापाली | नर | नल | वुडक्रेस्ट | नल | 938867763 | नल |
| 8 | लेस्ली विंकल | नर | 14-02-1984 | वुडक्रेस्ट | नल | 987636553 | नल |
| 9 | हावर्ड वोलोविट्ज़ | नर | 24-08-1981 | साउथ पार्क | पीओ Box 4563 | 987786553 | नल |
महिला सदस्यों को पहले प्रदर्शित किया जाता है, उसके बाद पुरुष सदस्यों को। ऐसा इसलिए है क्योंकि जब ORDER BY क्लॉज़ का उपयोग ASC या निर्दिष्ट किए बिना किया जाता है MySQL DESC कीवर्ड, MySQL यह डिफ़ॉल्ट रूप से क्वेरी परिणाम सेट को आरोही क्रम में सॉर्ट करता है।
दो स्तंभों को विपरीत दिशाओं में क्रमबद्ध करना
आइए अब एक ऐसे उदाहरण को देखें जो निम्न कार्य करता है: दो कॉलम का उपयोग करके छंटाईपहला स्तंभ है छाँटे गए in आरोही क्रम डिफ़ॉल्ट रूप से, जबकि दूसरा कॉलम है छाँटे गए in घटते क्रम में.
SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;
उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL myflixdb के विरुद्ध वर्कबेंच चलाने पर निम्नलिखित परिणाम प्राप्त होते हैं।
लिंग कॉलम डिफ़ॉल्ट रूप से आरोही क्रम में सॉर्ट किया गया था, जबकि जन्म तिथि कॉलम को अवरोही क्रम में स्पष्ट रूप से सॉर्ट किया गया था। प्रत्येक दिशा कीवर्ड केवल उसी कॉलम पर लागू होता है जिसके बाद वह आता है।
ORDER BY को WHERE, LIMIT और GROUP BY के साथ कैसे संयोजित करें
ORDER BY उत्पादन क्वेरी में शायद ही कभी एकमात्र क्लॉज़ होता है। MySQL यह हमेशा खंडों का मूल्यांकन एक निश्चित क्रम में करता है, और उस क्रम को जानने से यह स्पष्ट हो जाता है कि परिणाम वैसे क्यों दिखते हैं जैसे वे दिखते हैं।
- से यह तालिका से पंक्तियों को पढ़ता है।
- कहां यह शर्त पूरी न करने वाली पंक्तियों को हटा देता है।
- समूह द्वारा यह शेष पंक्तियों को समूहों में समेकित करता है, और HAVING उन समूहों को फ़िल्टर करता है।
- द्वारा आदेश शेष पंक्तियों को क्रमबद्ध करें।
- सीमा सॉर्ट की गई सूची से अनुरोधित संख्या में पंक्तियों को अलग करता है।
क्योंकि ORDER BY, WHERE और GROUP BY के बाद लेकिन LIMIT से पहले चलता है, इसलिए "वुडक्रेस्ट के पांच सबसे युवा सदस्य" जैसी क्वेरी को एक ही वाक्य में व्यक्त किया जाता है।
SELECT full_names, date_of_birth FROM members WHERE physical_address = 'Woodcrest' ORDER BY date_of_birth DESC LIMIT 5;
समूहीकृत परिणामों पर भी यही क्रम लागू होता है। द्वारा उत्पादित कुल मान समग्र कार्य उदाहरण के लिए, COUNT को सॉर्ट किया जा सकता है, जिससे सबसे व्यस्त श्रेणी रिपोर्ट के शीर्ष पर आ जाती है।
SELECT gender, COUNT(*) AS members_count FROM members GROUP BY gender ORDER BY members_count DESC;
सुझाव: ORDER BY का उपयोग कॉलम उपनाम, एक्सप्रेशन या कॉलम की स्थिति के आधार पर सॉर्ट करने के लिए किया जा सकता है, जैसे ORDER BY 3। स्थिति के आधार पर सॉर्ट करना थोड़ा मुश्किल है, क्योंकि SELECT सूची में नया कॉलम जोड़ने से सॉर्ट कुंजी अपने आप बदल जाती है। इसके बजाय कॉलम का नाम दें।
एक प्रदर्शन संबंधी बिंदु याद रखने योग्य है। जब सॉर्ट किए गए कॉलम में इंडेक्स होता है, MySQL यह इंडेक्स क्रम में पंक्तियों को पढ़ सकता है और सॉर्टिंग को पूरी तरह से छोड़ सकता है। इंडेक्स के बिना, बड़ी तालिकाओं में मेमोरी या डिस्क पर फाइलसॉर्ट करना अनिवार्य हो जाता है, जो आमतौर पर रिपोर्ट क्वेरी के धीमे होने का कारण होता है।

ASC आरोही का संक्षिप्त रूप है
MySQL DESC अवरोही का संक्षिप्त रूप है

