Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sắp xếp DESC nhưng để NULL lên đầu trong MySQL

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 NULL trả về 1 (true) cho NULL, 0 (false) cho không NULL.
  • DESC trê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 DESC cho 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ể.