ORDER BY में IS NULL से NULL सॉर्टिंग कंट्रोल करना
MySQL में किसी कॉलम के NOT NULL वैल्यू पहले और NULL वैल्यू बाद में दिखाने के लिए ORDER BY (Column IS NULL) एक्सप्रेशन का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable1357 (
StudentName VARCHAR(40),
StudentCountryName VARCHAR(30)
);
INSERT INTO DemoTable1357 VALUES('Chris', 'US');
INSERT INTO DemoTable1357 VALUES('David', NULL);
INSERT INTO DemoTable1357 VALUES('David', 'AUS');
INSERT INTO DemoTable1357 VALUES('Carol', NULL);
INSERT INTO DemoTable1357 VALUES('Mike', 'UK');
मौजूदा डेटा
+-------------+--------------------+ | StudentName | StudentCountryName | +-------------+--------------------+ | Chris | US | | David | NULL | | David | AUS | | Carol | NULL | | Mike | UK | +-------------+--------------------+
क्वेरी: NOT NULL पहले, फिर NULL
SELECT * FROM DemoTable1357 ORDER BY (StudentCountryName IS NULL), StudentName;
आउटपुट
+-------------+--------------------+ | StudentName | StudentCountryName | +-------------+--------------------+ | Chris | US | | David | AUS | | Mike | UK | | Carol | NULL | | David | NULL | +-------------+--------------------+
कैसे काम करता है
StudentCountryName IS NULLबूलियन एक्सप्रेशन: TRUE (1) या FALSE (0)- FALSE (0) = NOT NULL → पहले सॉर्ट होता है
- TRUE (1) = NULL → बाद में सॉर्ट होता है
- दूसरा क्रम
StudentNameसे अल्फाबेटिकल
विपरीत क्रम (NULL पहले)
ORDER BY (StudentCountryName IS NULL) DESC, StudentName;
COALESCE के साथ विकल्प
ORDER BY COALESCE(StudentCountryName, 'ZZZ'), StudentName;
NULL को 'ZZZ' से बदलकर अंत में भेजता है (स्ट्रिंग तुलना में Z अंत में आता है)।
एकाधिक कॉलम पर सॉर्टिंग
ORDER BY
(StudentCountryName IS NULL),
(StudentCity IS NULL),
StudentName;
डिफॉल्ट व्यवहार
MySQL में डिफॉल्ट रूप से ORDER BY Column ASC में NULL पहले आते हैं। DESC में अंत में।
मानक SQL (NULLS FIRST/LAST) - MySQL 8.0.2+
ORDER BY StudentCountryName ASC NULLS LAST
यह अधिक पढ़ने योग्य और पोर्टेबल है।