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

Kết hợp ORDER BY FIELD() và sắp xếp theo ID trong MySQL

Khi cần ưu tiên sắp xếp theo một giá trị cụ thể của cột (ví dụ: tên "Mike" lên đầu), sau đó sắp xếp tiếp theo theo ID giảm dần, dùng ORDER BY FIELD(...) DESC, Id DESC.

Ví dụ minh họa

Tạo bảng và chèn dữ liệu:

CREATE TABLE DemoTable (Id INT, Name VARCHAR(20));
INSERT INTO DemoTable VALUES 
(101, 'Chris'), (201, 'Mike'), (110, 'Adam'), (250, 'John');

Sắp xếp: "Mike" lên đầu, các tên còn lại theo ID giảm dần:

SELECT * FROM DemoTable
ORDER BY FIELD(Name, 'Mike') DESC, Id DESC;

Kết quả

IdName
201Mike
250John
110Adam
101Chris

Giải thích

  • FIELD(Name, 'Mike') trả về: 1 nếu Name='Mike', 0 nếu khác.
  • DESC khiến 1 (Mike) lên đầu, 0 (còn lại) xuống cuối.
  • Trong nhóm giá trị 0 (các tên khác), sắp xếp tiếp theo Id DESC.

Mở rộng: Ưu tiên nhiều giá trị

ORDER BY FIELD(Name, 'Mike', 'John', 'Adam') DESC, Id DESC

Thứ tự ưu tiên: Mike (3) → John (2) → Adam (1) → Chris (0) → rồi Id DESC trong mỗi nhóm.

Ứng dụng thực tế

  • Hiển thị sản phẩm "Nổi bật" / "Best seller" lên đầu.
  • Sắp xếp trạng thái đơn hàng: Processing → Shipped → Delivered → Cancelled.
  • Kết hợp với pagination.