Để sắp xếp danh sách bình thường nhưng ép một giá trị cụ thể luôn xuất hiện ở cuối, bạn dùng biểu thức logic trong ORDER BY: ORDER BY column = 'fixed_value', column.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable(
FirstName varchar(100)
);
Chèn dữ liệu:
mysql> insert into DemoTable values('Chris');
mysql> insert into DemoTable values('Adam');
mysql> insert into DemoTable values('John');
mysql> insert into DemoTable values('Sam');
mysql> insert into DemoTable values('Mike');
mysql> insert into DemoTable values('David');
Hiển thị dữ liệu gốc:
mysql> select * from DemoTable;
Kết quả:
+-----------+ | FirstName | +-----------+ | Chris | | Adam | | John | | Sam | | Mike | | David | +-----------+
Truy vấn sắp xếp A-Z nhưng ép "Mike" về cuối
mysql> select * from DemoTable order by FirstName='Mike', FirstName;
Kết quả:
+-----------+ | FirstName | +-----------+ | Adam | | Chris | | David | | John | | Sam | | Mike | +-----------+
Giải thích:
FirstName = 'Mike': Biểu thức logic, TRUE = 1, FALSE = 0- Sắp xếp theo cột ảo này trước: FALSE (0) trước, TRUE (1) sau → các tên khác 'Mike' lên trước
- Trong cùng nhóm FALSE, sắp xếp tiếp theo
FirstName(A-Z) - 'Mike' (TRUE=1) bị đẩy xuống cuối
Mở rộng: Để ép nhiều giá trị về cuối theo thứ tự: ORDER BY FIELD(FirstName, 'Mike', 'John'), FirstName hoặc ORDER BY CASE WHEN FirstName IN ('Mike','John') THEN 1 ELSE 0 END, FirstName.