Ayrıca MySQL FIELD
işlevi de var .
Tüm olası değerler için tam sıralama istiyorsanız:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Yalnızca "özün" önce geldiğini ve diğer değerlerin önemli olmadığını önemsiyorsanız:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Önce "çekirdek" e ve diğer alanları normal sıralama düzenine göre sıralamak isterseniz:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Yine de burada bazı uyarılar var:
İlk olarak, bunun yalnızca mysql işlevi olduğundan oldukça eminim - soru mysql olarak etiketlendi, ancak asla bilemezsiniz.
İkincisi, nasıl FIELD()
çalıştığına dikkat edin : değerin bir tabanlı dizinini döndürür - değerin FIELD(priority, "core")
"çekirdek" olması durumunda 1 döndürür. Alanın değeri listede değilse sıfır döndürür . Bu nedenle DESC
, tüm olası değerleri belirtmediğiniz sürece gereklidir.