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.