Jest też funkcja MySQLFIELD
.
Jeśli chcesz kompletne sortowanie dla wszystkich możliwych wartości:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Jeśli zależy Ci tylko na tym, aby „rdzeń” był pierwszy, a inne wartości nie mają znaczenia:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Jeśli chcesz najpierw posortować według „rdzenia”, a pozostałe pola w normalnej kolejności:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Istnieją jednak pewne zastrzeżenia:
Po pierwsze, jestem prawie pewien, że to tylko funkcja mysql - pytanie jest otagowane jako mysql, ale nigdy nie wiadomo.
Po drugie, zwróć uwagę na to, jak FIELD()
działa: zwraca indeks wartości ( liczony od jedynek) - w przypadku FIELD(priority, "core")
zwraca 1, jeśli wartością jest „rdzeń”. Jeśli wartość pola nie znajduje się na liście, zwraca zero . Dlatego DESC
jest to konieczne, chyba że określisz wszystkie możliwe wartości.