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

Sắp xếp tùy chỉnh trên cùng một cột trong MySQL

Sử dụng ORDER BY IF(condition, 1, 0) để ưu tiên sắp xếp các hàng thỏa mãn điều kiện lên đầu.

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

mysql> CREATE TABLE DemoTable801(Score INT); 
Query OK, 0 rows affected (0.69 sec)

mysql> INSERT INTO DemoTable801 VALUES 
(30), (99), (45), (55), (99), (69), (25), (79); 
Query OK, 8 rows affected

Sắp xếp: giá trị 99 lên đầu, còn lại tăng dần

mysql> SELECT * FROM DemoTable801 
ORDER BY IF(Score = 99, 1, 0), Score;

Kết quả:

+-------+
| Score |
+-------+
| 25    |
| 30    |
| 45    |
| 55    |
| 69    |
| 79    |
| 99    |
| 99    |
+-------+

Giải thích: IF(Score=99, 1, 0) trả về 1 cho Score=99, 0 cho các giá trị khác. Sắp xếp theo cột ảo này trước (1 > 0), sau đó mới sắp xếp theo Score tăng dần.

Mở rộng: Để ưu tiên nhiều giá trị: ORDER BY IF(Score IN (99,100), 1, 0), Score.