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

Hiển thị danh sách bản ghi theo thứ tự tùy chỉnh (ASC) với ORDER BY CASE trong MySQL

Giới thiệu

Để sắp xếp kết quả theo thứ tự không phải tự nhiên (alphabetically), MySQL cho phép sử dụng ORDER BY CASE ... END để gán trọng số ưu tiên cho từng điều kiện.

Ví dụ minh họa: Đưa các tên có chứa 'Smith' xuống cuối

Bước 1: Tạo bảng và chèn dữ liệu

CREATE TABLE DemoTable2039 (Name VARCHAR(20));
INSERT INTO DemoTable2039 VALUES ('John Doe'), ('John Smith'), ('Chris Brown'), ('Adam Smith'), ('David Miller');

Bước 2: Sắp xếp với CASE

SELECT * FROM DemoTable2039
ORDER BY
    CASE WHEN Name LIKE '%Smith%' THEN 101 ELSE 100 END,
    Name;

Kết quả:

+--------------+
| Name         |
+--------------+
| Chris Brown  |
| David Miller |
| John Doe     |
| Adam Smith   |
| John Smith   |
+--------------+

Giải thích: Các tên không chứa 'Smith' được gán giá trị 100 (ưu tiên cao hơn), tên có 'Smith' gán 101. Sau đó sắp xếp theo tên thông thường trong cùng nhóm ưu tiên.

Mở rộng: Có thể thêm nhiều nhánh WHEN ... THEN ... để tạo nhiều cấp độ ưu tiên.