Kỹ thuật sắp xếp "wrap-around": chia dữ liệu thành 2 nhóm bởi điều kiện boolean, sắp xếp nhóm TRUE trước (DESC), sau đó sắp xếp ASC trong mỗi nhóm.
Ví dụ minh họa
Tạo bảng giá trị ngẫu nhiên:
CREATE TABLE DemoTable (Value INT); INSERT INTO DemoTable VALUES (20),(40),(30),(10),(90),(70),(80),(9),(8);
Sắp xếp: giá trị > 10 lên đầu (tăng dần), rồi ≤ 10 (tăng dần):
SELECT * FROM DemoTable ORDER BY Value > 10 DESC, Value ASC;
Kết quả
| Value |
|---|
| 20 |
| 30 |
| 40 |
| 70 |
| 80 |
| 90 |
| 8 |
| 9 |
| 10 |
Giải thích
Value > 10trả về 1 (TRUE) hoặc 0 (FALSE).DESCkhiến TRUE (1) lên đầu, FALSE (0) xuống cuối.- Trong mỗi nhóm,
Value ASCsắp xếp tăng dần.
Mở rộng: Nhiều nhóm ưu tiên
ORDER BY
CASE
WHEN Value > 100 THEN 3
WHEN Value > 50 THEN 2
WHEN Value > 10 THEN 1
ELSE 0
END DESC,
Value ASC;
Ứng dụng thực tế
- Hiển thị sản phẩm "Còn hàng" (>0) trước, "Hết hàng" (=0) sau.
- Sắp xếp task: Priority High → Medium → Low, rồi theo deadline.
- Leaderboard: Đạt điểm bonus lên đầu, rồi sắp xếp điểm số.