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

MySQL में तारीख के अनुसार क्रमबद्ध करें लेकिन खाली तारीखों को अंत में रखें


ORDER BY में IS NULL का उपयोग करें

तारीख के अनुसार अवरोही क्रम में क्रमबद्ध करते हुए NULL तारीखों को अंत में रखने के लिए, ORDER BY (dateCol IS NULL), dateCol DESC का उपयोग करें।

सिंटैक्स

SELECT * FROM yourTableName 
ORDER BY (yourDateColumnName IS NULL), yourDateColumnName DESC;

व्याख्या

  • (yourDateColumnName IS NULL) एक बूलियन अभिव्यक्ति है जो 1 (सच/NULL) या 0 (गलत/गैर-NULL) लौटाती है।
  • ORDER BY डिफ़ॉल्ट रूप से आरोही क्रम में क्रमबद्ध करता है, इसलिए 0 (गैर-NULL) पहले आते हैं, फिर 1 (NULL)।
  • दूसरा क्रमबद्ध मानदंड dateCol DESC गैर-NULL तारीखों को नवीनतम से सबसे पुराने क्रम में रखता है।

व्यावहारिक उदाहरण

टेबल बनाना

mysql> CREATE TABLE DateColumnWithNullDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    LoginDateTime DATETIME,
    PRIMARY KEY(Id)
);

डेटा डालना (कुछ NULL के साथ)

mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(DATE_ADD(NOW(), INTERVAL -1 YEAR));
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(NULL);
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(NULL);
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(NOW());
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(CURDATE());
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES('2017-08-25 15:30:35');
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(NULL);
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES('2016-12-25 16:55:55');
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(NULL);
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES('2014-11-12 10:20:23');
mysql> INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES('2020-01-01 06:45:23');

मूल डेटा

+----+---------------------+
| Id | LoginDateTime       |
+----+---------------------+
|  1 | 2018-01-29 17:07:20 |
|  2 | NULL                |
|  3 | NULL                |
|  4 | 2019-01-29 17:07:54 |
|  5 | 2019-01-29 00:00:00 |
|  6 | 2017-08-25 15:30:35 |
|  7 | NULL                |
|  8 | 2016-12-25 16:55:55 |
|  9 | NULL                |
| 10 | 2014-11-12 10:20:23 |
| 11 | 2020-01-01 06:45:23 |
+----+---------------------+

क्वेरी: NULL अंत में, तारीख अवरोही

mysql> SELECT * FROM DateColumnWithNullDemo 
ORDER BY (LoginDateTime IS NULL), LoginDateTime DESC;

आउटपुट

+----+---------------------+
| Id | LoginDateTime       |
+----+---------------------+
| 11 | 2020-01-01 06:45:23 |
|  4 | 2019-01-29 17:07:54 |
|  5 | 2019-01-29 00:00:00 |
|  1 | 2018-01-29 17:07:20 |
|  6 | 2017-08-25 15:30:35 |
|  8 | 2016-12-25 16:55:55 |
| 10 | 2014-11-12 10:20:23 |
|  2 | NULL                |
|  3 | NULL                |
|  7 | NULL                |
|  9 | NULL                |
+----+---------------------+

विविधताएं

  • आरोही क्रम, NULL अंत: ORDER BY (dt IS NULL), dt ASC
  • NULL पहले, अवरोही: ORDER BY (dt IS NULL) DESC, dt DESC
  • COALESCE के साथ: ORDER BY COALESCE(dt, '9999-12-31') DESC (NULL को दूर भविष्य की तारीख से बदलता है)।

मुख्य बिंदु

ORDER BY (col IS NULL), col DESC पैटर्न NULL मानों को अंत में धकेलने का मानक, पोर्टेबल तरीका है।

  1. - MySQL में तारीख प्रारूप कैसे अपडेट करें?

    MySQL में STR_TO_DATE() का उपयोग करके गलत तारीख प्रारूप को सही करना जब तारीख गलत प्रारूप में VARCHAR कॉलम में संग्रहीत हो (जैसे YYYY-DD-MM), तो STR_TO_DATE() फ़ंक्शन का उपयोग करके इसे सही DATE टाइप में पार्स करें। उदाहरण के साथ पूर्ण कार्यान्वयन टेबल बनाना (VARCHAR में गलत प्रारूप) CREATE TABLE D

  1. - MySQL में टाइमस्टैम्प को अवरोही क्रम में क्रमबद्ध करना लेकिन 0000-00-00 00:00:00 को पहले रखना

    MySQL में ORDER BY में बूलियन एक्सप्रेशन का उपयोग करके जीरो टाइमस्टैम्प को पहले रखना MySQL में बूलियन एक्सप्रेशन संख्यात्मक संदर्भ में 1 (सत्य) या 0 (असत्य) होते हैं। इसका उपयोग कस्टम क्रमबद्ध करने के लिए किया जा सकता है। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable ( `timestamp` TIM

  1. - MySQL में खाली स्ट्रिंग को NULL में कैसे अपडेट करें?

    MySQL: खाली स्ट्रिंग () को NULL में बदलना खाली स्ट्रिंग और NULL अलग हैं। खाली स्ट्रिंग को NULL में बदलने के लिए LENGTH() फंक्शन का उपयोग करके लंबाई 0 वाली स्ट्रिंग्स को पहचानें, फिर UPDATE से NULL सेट करें। उदाहरण: खाली नाम को NULL करें टेबल बनाएं: CREATE TABLE DemoTable (Name VARCHAR(50)); INSERT