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

Sắp xếp MySQL theo cột cụ thể và hiển thị giá trị còn lại tăng dần

Sắp xếp tùy chỉnh: Ưu tiên một giá trị cụ thể, phần còn lại tăng dần

Kỹ thuật: ORDER BY (cot = gia_tri) DESC, cot ASC. Biểu thức logic trả về 1 (true) hoặc 0 (false), sắp xếp DESC đưa true lên đầu.

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

mysql> create table DemoTable ( MonthNumber int ); 
Query OK, 0 rows affected (1.68 sec)
mysql> insert into DemoTable values(10); 
mysql> insert into DemoTable values(1); 
mysql> insert into DemoTable values(9); 
mysql> insert into DemoTable values(6); 
mysql> insert into DemoTable values(8); 
mysql> insert into DemoTable values(5);

Dữ liệu gốc

+-------------+ 
| MonthNumber | 
+-------------+ 
| 10          | 
| 1           | 
| 9           | 
| 6           | 
| 8           | 
| 5           | 
+-------------+

Truy vấn: Đưa 5 lên đầu, phần còn lại tăng dần

mysql> select * from DemoTable 
    -> order by MonthNumber=5 desc, MonthNumber asc;

Kết quả

+-------------+ 
| MonthNumber | 
+-------------+ 
| 5           | 
| 1           | 
| 6           | 
| 8           | 
| 9           | 
| 10          | 
+-------------+

Giải thích:

  • MonthNumber=5 trả về 1 cho hàng có giá trị 5, 0 cho các hàng khác
  • DESC sắp xếp 1 trước 0 → hàng 5 lên đầu
  • MonthNumber ASC sắp xếp tăng dần cho phần còn lại

Mở rộng: Để ưu tiên nhiều giá trị: ORDER BY FIELD(MonthNumber, 5, 1, 6), MonthNumber hoặc ORDER BY CASE WHEN MonthNumber IN (5,1) THEN 0 ELSE 1 END, MonthNumber.