Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เรียงลำดับ DESC แต่วางค่า NULL ไว้หน้าสุดใน MySQL

เพื่อเรียงลำดับแบบ 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 ต่อ