To powinno dać ci największą kontrolę nad tym:
order by
case left(positions.colleague_position_id, 1)
when 'A' then 1
when 'F' then 2
when 'T' then 3
when 'S' then 4
when 'C' then 5
else 6
end, positions.colleague_position_id
Dzieje się tak, ponieważ możesz wysłać wszystkie niepasujące wartości na żądaną pozycję (w tym przypadku na końcu). field()
funkcja zwróci 0
dla niepasujących wartości i umieści je na górze zestawu wyników, nawet przed tymi zaczynającymi się od A
.
Dodatkowo możesz również zamawiać według positions.colleague_position_id
tak jak zrobiłem w przykładzie, aby dla wielu positions.colleague_position_id
które zaczynają się na tę samą literę, nadal będą w porządku.