द्वारा आदेश MySQLउदाहरण सहित ASC और DESC क्वेरी

⚡ स्मार्ट सारांश

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

  • 🔠 डिफ़ॉल्ट व्यवहार: ORDER BY फ़ंक्शन आरोही क्रम में सॉर्ट करता है जब न तो ASC और न ही DESC का उल्लेख किया गया हो, इसलिए अधिकांश कथनों में ASC वैकल्पिक है।
  • एएससी कीवर्ड: एएससी संख्याओं को सबसे छोटे से सबसे बड़े क्रम में, स्ट्रिंग को ए से जेड तक और तिथियों को सबसे पुरानी से सबसे नई तक व्यवस्थित करता है।
  • ⬇️ विवरण कीवर्ड: DESC उस क्रम को उलट देता है, जो हाल ही में किए गए भुगतान इतिहास और घटती जन्मतिथि वाली सूचियों के लिए उपयुक्त है।
  • 🧮 बहु-स्तंभ छँटाई: कॉलम का क्रम महत्वपूर्ण है। ORDER BY gender, date_of_birth DESC कॉन्फ़िगरेशन में प्रत्येक समूह के भीतर लिंग को आरोही क्रम में और फिर तिथियों को अवरोही क्रम में सॉर्ट किया जाता है।
  • 🔎 खंडों का संयोजन: WHERE पंक्तियों को फ़िल्टर करता है, GROUP BY उन्हें एकत्रित करता है, ORDER BY परिणाम को क्रमबद्ध करता है, और LIMIT उसे ट्रिम करता है।
  • ⚙️ प्रदर्शन कारक: सॉर्ट किए गए कॉलम पर एक इंडेक्स अनुमति देता है MySQL बड़ी तालिकाओं पर फाइलसॉर्ट ऑपरेशन से बचने के लिए।

द्वारा आदेश MySQL

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, इन दो सॉर्ट दिशाओं को स्वीकार करता है। नीचे दी गई तालिका उन डेटा प्रकारों के आधार पर इनकी तुलना करती है जिनका उपयोग आप अक्सर सॉर्ट करने के लिए करेंगे।

DESC और ASC कीवर्ड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 के विरुद्ध वर्कबेंच चलाने पर हमें नीचे दिखाए गए परिणाम प्राप्त होते हैं।

MySQL ORDER BY DESC क्वेरी परिणाम

ASC विधि से आरोही क्रम में सॉर्ट करना

उसी क्वेरी को आरोही क्रम में रखने से केवल कीवर्ड की अदला-बदली हो जाती है।

SELECT * FROM members ORDER BY date_of_birth ASC;

MySQL आरोही क्रम (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 के विरुद्ध वर्कबेंच चलाने पर निम्नलिखित परिणाम प्राप्त होते हैं।

MySQL दो स्तंभों के आधार पर क्रमबद्ध करने का उदाहरण

लिंग कॉलम डिफ़ॉल्ट रूप से आरोही क्रम में सॉर्ट किया गया था, जबकि जन्म तिथि कॉलम को अवरोही क्रम में स्पष्ट रूप से सॉर्ट किया गया था। प्रत्येक दिशा कीवर्ड केवल उसी कॉलम पर लागू होता है जिसके बाद वह आता है।

ORDER BY को WHERE, LIMIT और GROUP BY के साथ कैसे संयोजित करें

ORDER BY उत्पादन क्वेरी में शायद ही कभी एकमात्र क्लॉज़ होता है। MySQL यह हमेशा खंडों का मूल्यांकन एक निश्चित क्रम में करता है, और उस क्रम को जानने से यह स्पष्ट हो जाता है कि परिणाम वैसे क्यों दिखते हैं जैसे वे दिखते हैं।

  1. से यह तालिका से पंक्तियों को पढ़ता है।
  2. कहां यह शर्त पूरी न करने वाली पंक्तियों को हटा देता है।
  3. समूह द्वारा यह शेष पंक्तियों को समूहों में समेकित करता है, और HAVING उन समूहों को फ़िल्टर करता है।
  4. द्वारा आदेश शेष पंक्तियों को क्रमबद्ध करें।
  5. सीमा सॉर्ट की गई सूची से अनुरोधित संख्या में पंक्तियों को अलग करता है।

क्योंकि 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 यह इंडेक्स क्रम में पंक्तियों को पढ़ सकता है और सॉर्टिंग को पूरी तरह से छोड़ सकता है। इंडेक्स के बिना, बड़ी तालिकाओं में मेमोरी या डिस्क पर फाइलसॉर्ट करना अनिवार्य हो जाता है, जो आमतौर पर रिपोर्ट क्वेरी के धीमे होने का कारण होता है।

अक्सर पूछे जाने वाले प्रश्न

यह संभव है। सॉर्ट किए गए कॉलम पर इंडेक्स के बिना, MySQL यह पूरे परिणाम सेट पर फ़ाइलसॉर्ट करता है। ORDER BY कॉलम और दिशा से मेल खाने वाला इंडेक्स जोड़ने से सर्वर पंक्तियों को क्रम से पढ़ सकता है और उस चरण को छोड़ सकता है।

आमतौर पर नहीं। utf8mb4_0900_ai_ci जैसे डिफ़ॉल्ट कोलेशन केस-इनसेंसिटिव होते हैं, इसलिए "apple" और "Apple" एक साथ सॉर्ट होते हैं। बाइनरी या _cs कोलेशन, या ORDER BY BINARY column_name, केस-सेंसिटिव ऑर्डरिंग प्रदान करते हैं जिसमें बड़े अक्षर पहले आते हैं।

हाँ। ORDER BY RAND() परिणाम सेट को शफल करता है, जो किसी रैंडम मूवी या सदस्य को चुनने के लिए उपयोगी है। यह सॉर्ट करने से पहले प्रत्येक पंक्ति को स्कोर करता है, इसलिए इसे LIMIT के साथ प्रयोग करें और बहुत बड़ी तालिकाओं पर इसका उपयोग करने से बचें।

हाँ। एआई सहायक उपकरण जैसे कि MySQL कार्यक्षेत्र साधारण भाषा में लिखे गए अनुरोधों को ORDER BY के साथ SELECT स्टेटमेंट में बदलें। हमेशा जनरेट किए गए सॉर्ट कॉलम और दिशा की समीक्षा करें, क्योंकि AI यह नहीं जान सकता कि आपकी रिपोर्ट के लिए किस क्रम की आवश्यकता है।

कुछ हद तक। AI-आधारित सलाहकार धीमी क्वेरी लॉग पढ़ते हैं और ऐसे इंडेक्स सुझाते हैं जो फाइलसॉर्ट ऑपरेशन को हटा देते हैं। इन सुझावों की मानवीय समीक्षा अभी भी आवश्यक है, क्योंकि प्रत्येक अतिरिक्त इंडेक्स उसी टेबल पर इंसर्ट और अपडेट की गति को बढ़ा देता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: