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

Sắp xếp wrap-around: giá trị > 10 trước (ASC), rồi ≤ 10 (ASC) trong MySQL

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 > 10 trả về 1 (TRUE) hoặc 0 (FALSE).
  • DESC khiến TRUE (1) lên đầu, FALSE (0) xuống cuối.
  • Trong mỗi nhóm, Value ASC sắ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ố.