ORDER BY DESC với NULL xuất hiện đầu tiên
Mặc định ORDER BY cot DESC đặt NULL ở cuối. Để NULL lên đầu, sắp xếp thêm biểu thức cot IS NULL DESC.
Cú pháp
SELECT cot FROM tenBang
ORDER BY cot IS NULL DESC, cot DESC;
Giải thích:
cot IS NULLtrả về 1 (true) cho NULL, 0 (false) cho không NULL.DESCtrên biểu thức này đưa 1 (NULL) lên trước 0 (không NULL).- Sau đó sắp xếp tiếp
cot DESCcho các giá trị không NULL.
Ví dụ minh họa
Tạo bảng OrderByNullFirstDemo:
CREATE TABLE OrderByNullFirstDemo (StudentId INT);
INSERT INTO OrderByNullFirstDemo VALUES (100), (200), (150), (NULL);
Truy vấn sắp xếp:
SELECT StudentId FROM OrderByNullFirstDemo
ORDER BY StudentId IS NULL DESC, StudentId DESC;
Kết quả
+-----------+
| StudentId |
+-----------+
| NULL |
| 200 |
| 150 |
| 100 |
+-----------+
Thay thế: ORDER BY -cot DESC (chỉ số)
Với cột số, có thể dùng trick:
ORDER BY -cot DESC
Nhưng cách này không đưa NULL lên đầu (NULL vẫn cuối). Cách IS NULL DESC chuẩn xác và áp dụng cho mọi kiểu dữ liệu.
Ứng dụng
Hữu ích khi hiển thị danh sách có giá trị "chưa xác định" (NULL) cần ưu tiên hiển thị trước các giá trị cụ thể.