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 मानों को अंत में धकेलने का मानक, पोर्टेबल तरीका है।