Dùng ORDER BY với (cột IS NULL) để đẩy NULL về cuối, rồi sắp xếp ngày giảm dần.
Cú pháp:
SELECT *FROM yourTableName ORDER BY (yourDateColumnName IS NULL), yourDateColumnName DESC;
Demo: Bảng DateColumnWithNullDemo cột LoginDateTime có nhiều NULL.
Truy vấn:
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 được đẩy xuống cuối, các ngày hợp lệ sắp xếp DESC.