Ngoài ra còn có chức năng MySQLFIELD
.
Nếu bạn muốn sắp xếp hoàn chỉnh cho tất cả các giá trị có thể:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Nếu bạn chỉ quan tâm rằng "cốt lõi" là trên hết và các giá trị khác không quan trọng:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Nếu bạn muốn sắp xếp theo "lõi" trước và các trường khác theo thứ tự sắp xếp thông thường:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Tuy nhiên, có một số lưu ý ở đây:
Đầu tiên, tôi khá chắc rằng đây là chức năng chỉ dành cho mysql - câu hỏi được gắn thẻ mysql, nhưng bạn không bao giờ biết.
Thứ hai, hãy chú ý đến cách FIELD()
hoạt động: nó trả về chỉ mục dựa trên một giá trị - trong trường hợp FIELD(priority, "core")
, nó sẽ trả về 1 nếu "core" là giá trị. Nếu giá trị của trường không có trong danh sách, nó sẽ trả về giá trị không . Đây là lý do tại sao DESC
cần thiết trừ khi bạn chỉ định tất cả các giá trị có thể.