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

Hiển thị hàng được chọn đầu tiên (ưu tiên giá trị cụ thể) trong MySQL

Để hiển thị một hàng cụ thể (ví dụ: giá trị Value = 9) lên đầu, sau đó các hàng còn lại sắp xếp giảm dần, bạn dùng ORDER BY với biểu thức boolean. Trong MySQL, biểu thức so sánh trả về 1 (TRUE) hoặc 0 (FALSE). Sắp xếp DESC sẽ đưa TRUE (1) lên trước.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable (Value INT);

mysql> INSERT INTO DemoTable VALUES 
(20), (8), (18), (11), (9), (19), (6), (7);

Dữ liệu gốc (theo thứ tự chèn)

mysql> SELECT * FROM DemoTable;
+-------+
| Value |
+-------+
|    20 |
|     8 |
|    18 |
|    11 |
|     9 |
|    19 |
|     6 |
|     7 |
+-------+

Truy vấn: Đưa Value = 9 lên đầu, các giá trị khác sắp xếp giảm dần

mysql> SELECT * FROM DemoTable 
ORDER BY (Value = 9) DESC, Value DESC;

Kết quả

+-------+
| Value |
+-------+
|     9 |
|    20 |
|    19 |
|    18 |
|    11 |
|     8 |
|     7 |
|     6 |
+-------+

Giải thích

  • (Value = 9): Trả về 1 cho hàng có Value=9, 0 cho các hàng khác.
  • ORDER BY ... DESC: 1 (TRUE) lớn hơn 0 (FALSE) -> hàng Value=9 lên đầu.
  • Value DESC: Tiêu chí thứ 2, sắp xếp các hàng còn lại giảm dần.

Ứng dụng thực tế

  • Hiển thị sản phẩm "Nổi bật" (Featured) lên đầu.
  • Ưu tiên hiển thị bản ghi đang active, sau đó mới đến inactive.
  • Sắp xếp tùy chỉnh phức tạp không cần CASE dài dòng.

Kỹ thuật này tận dụng đặc tính boolean của MySQL (TRUE=1, FALSE=0) rất hiệu quả và ngắn gọn.