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

ORDER BY วันที่ใน MySQL ให้วันที่ว่างอยู่ท้ายสุด


ใช้ ORDER BY ร่วมกับ IS NULL เพื่อจัดเรียงวันที่ และวางค่า NULL ไว้ท้ายสุด

รูปแบบไวยากรณ์

SELECT * FROM yourTableName ORDER BY (yourDateColumnName IS NULL), yourDateColumnName DESC;

(yourDateColumnName IS NULL) จะคืนค่า 1 (TRUE) สำหรับ NULL และ 0 (FALSE) สำหรับค่าที่มีข้อมูล เรียงจากน้อยไปมาก (0 ก่อน 1) ทำให้ค่าที่ไม่ใช่ NULL อยู่ก่อน

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> CREATE TABLE DateColumnWithNullDemo ( Id INT NOT NULL AUTO_INCREMENT, LoginDateTime DATETIME, PRIMARY KEY(Id) );

เพิ่มข้อมูล (มี NULL หลายแถว):

INSERT INTO DateColumnWithNullDemo(LoginDateTime) VALUES(DATE_ADD(NOW(), INTERVAL -1 YEAR)),(NULL),(NULL),(NOW()),(CURDATE()),('2017-08-25 15:30:35'),(NULL),('2016-12-25 16:55:55'),(NULL),('2014-11-12 10:20:23'),('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                | +----+---------------------+ 11 rows in set (0.00 sec)

วันที่ที่มีค่าอยู่ก่อน เรียงจากใหม่ไปเก่า NULL อยู่ท้ายสุดทั้งหมด