MySQL ORDER BY में शून्य मान को अंतिम स्थान पर रखने की तकनीक
सामान्य ORDER BY column ASC में 0 सबसे पहले आता है। इसे अंत में रखने के लिए बूलियन एक्सप्रेशन का उपयोग करें।
सिंटैक्स:
SELECT * FROM yourTableName ORDER BY yourFieldName = 0, yourFieldName;
कैसे काम करता है:
yourFieldName = 0एक बूलियन एक्सप्रेशन है जो TRUE (1) या FALSE (0) लौटाता हैORDER BYपहले इस बूलियन मान से सॉर्ट करता है: FALSE (0) पहले, TRUE (1) बाद में- फिर वास्तविक कॉलम मान से सॉर्ट करता है
- इसलिए गैर-शून्य मान पहले (सॉर्टेड), फिर शून्य मान आते हैं
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE SortColumnZeroAtLastDemo (RankNumber INT); Query OK, 0 rows affected (1.40 sec)
2. डेटा डालें (शून्य सहित):
mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(100); mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(0); mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(0); mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(50); mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(10); mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(0); mysql> INSERT INTO SortColumnZeroAtLastDemo VALUES(40);
3. मूल क्रम:
+------------+ | RankNumber | +------------+ | 100 | | 0 | | 0 | | 50 | | 10 | | 0 | | 40 | +------------+ 7 rows in set (0.00 sec)
4. शून्य को अंत में रखकर सॉर्ट करें:
mysql> SELECT * FROM SortColumnZeroAtLastDemo
-> ORDER BY RankNumber = 0, RankNumber;
+------------+ | RankNumber | +------------+ | 10 | | 40 | | 50 | | 100 | | 0 | | 0 | | 0 | +------------+ 7 rows in set (0.00 sec)
विविधताएं:
NULL को भी अंत में रखें:
ORDER BY (yourColumn = 0 OR yourColumn IS NULL), yourColumn
DESC क्रम में (शून्य अभी भी अंत में):
ORDER BY yourColumn = 0, yourColumn DESC
केस स्टेटमेंट (अधिक स्पष्ट):
ORDER BY CASE WHEN yourColumn = 0 THEN 1 ELSE 0 END, yourColumn
उपयोग केस:
- रैंकिंग/स्कोर जहां 0 का अर्थ "अनरैंक्ड" या "लागू नहीं"
- इन्वेंट्री जहां 0 = स्टॉक खत्म
- कोई भी मीट्रिक जहां 0 डेटा की अनुपस्थिति दर्शाता है