Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में कॉलम सॉर्ट करें लेकिन 0 (शून्य) को अंत में रखें

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 डेटा की अनुपस्थिति दर्शाता है
  1. - MySQL में STR_TO_DATE को कॉलम के रूप में उपयोग करें लेकिन कॉलम नहीं मिला? HAVING क्लॉज़ का उपयोग

    आप HAVING क्लॉज़ का उपयोग कर सकते हैं। टेबल बनाएं mysql> create table DemoTable ( -> AdmissionDate varchar(100) -> ); Query OK, 0 rows affected (0.55 sec) रिकॉर्ड्स डालें mysql> insert into DemoTable values(10/12/2017); Query OK, 1 row affected (0.18 sec) mysql> insert into

  1. - MySQL में किसी विशिष्ट शब्द को नजरअंदाज करके कॉलम सॉर्ट करना

    उदाहरण टेबल बनाएं: mysql> create table DemoTable ( -> Name text -> ); Query OK, 0 rows affected (1.31 sec) रिकॉर्ड डालें - name शब्द वाला नाम जिसे नजरअंदाज करना है: mysql> insert into DemoTable values(John 7); Query OK, 1 row affected (0.65 sec) mysql> insert into DemoTable v

  1. - क्या MySQL तालिका में 'year' को कॉलम नाम के रूप में उपयोग कर सकते हैं?

    MySQL में year को कॉलम नाम के रूप में उपयोग करना YEAR MySQL में एक आरक्षित शब्द (reserved word) है क्योंकि यह एक फ़ंक्शन नाम है (YEAR(date))। हालांकि, इसे बैकटिक (`) में लपेटकर कॉलम नाम के रूप में उपयोग किया जा सकता है। व्यावहारिक उदाहरण तालिका बनाना (बैकटिक के साथ) CREATE TABLE DemoTable ( `