เพื่อเรียงลำดับแบบ Descending แต่ให้ค่า NULL อยู่บนสุด ใช้ GROUP BY ร่วมกับเงื่อนไข IS NULL รูปแบบ:
SELECT yourColumnName FROM yourTableName
GROUP BY yourColumnName IS NULL DESC, yourColumnName DESC;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล (รวม NULL):
mysql> CREATE TABLE OrderByNullFirstDemo (StudentId INT);
mysql> INSERT INTO OrderByNullFirstDemo VALUES (100), (200), (150), (NULL);
ข้อมูลเดิม:
+-----------+
| StudentId |
+-----------+
| 100 |
| 200 |
| 150 |
| NULL |
+-----------+
คิวรีเรียง DESC ให้ NULL ก่อน
mysql> SELECT StudentId FROM OrderByNullFirstDemo
-> GROUP BY StudentId IS NULL DESC, StudentId DESC;
ผลลัพธ์:
+-----------+
| StudentId |
+-----------+
| NULL |
| 200 |
| 150 |
| 100 |
+-----------+
คำอธิบาย: StudentId IS NULL คืนค่า 1 (TRUE) สำหรับ NULL และ 0 (FALSE) สำหรับค่าอื่น เรียง DESC ทำให้ 1 (NULL) อยู่ก่อน 0 (ค่าปกติ) แล้วค่อยเรียงค่าปกติ DESC ต่อ