บทความนี้สาธิตการใช้ ORDER BY ISNULL(column) เพื่อจัดลำดับให้ค่าที่ไม่ใช่ NULL (Non-NULL) อยู่ก่อน เรียงจากน้อยไปมาก แล้วค่อยค่า NULL ทีหลัง
สร้างตารางและข้อมูลทดสอบ (มีค่า NULL)
mysql> CREATE TABLE DemoTable669(
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentScore INT
);
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable669(StudentScore) VALUES(45);
mysql> INSERT INTO DemoTable669(StudentScore) VALUES(NULL);
mysql> INSERT INTO DemoTable669(StudentScore) VALUES(89);
mysql> INSERT INTO DemoTable669(StudentScore) VALUES(NULL);
คิวรีเรียง Non-NULL ก่อน แล้วค่อย NULL
mysql> SELECT * FROM DemoTable669
ORDER BY ISNULL(StudentScore), StudentScore;
ผลลัพธ์
+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 1 | 45 |
| 3 | 89 |
| 2 | NULL |
| 4 | NULL |
+-----------+--------------+
คำอธิบาย:
ISNULL(StudentScore)- คืน 1 ถ้าเป็น NULL, 0 ถ้าไม่ใช่ NULLORDER BY ISNULL(...), StudentScore- เรียง ISNULL ก่อน (0 ก่อน 1 = Non-NULL ก่อน) แล้วค่อยเรียงค่าจริง- เทียบเท่า:
ORDER BY (StudentScore IS NULL), StudentScore
ประโยชน์: ใช้สำหรับรายงานที่ต้องการแสดงข้อมูลที่มีค่าก่อน แล้วค่อยข้อมูลที่ขาดหายไปทีหลัง