Ngoài ra còn có MySQL FIELD
chức năng
.
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 "cốt 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 một dựa trên của giá trị - trong trường hợp FIELD(priority, "core")
, nó sẽ trả về 1 nếu "lõi" là giá trị. Nếu giá trị của trường không có trong danh sách, nó sẽ trả về không . Đây là lý do tại sao DESC
là cần thiết trừ khi bạn chỉ định tất cả các giá trị có thể có.