Това трябва да ви даде най-голям контрол над него:
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
Това е така, защото можете да изпратите всички несъвпадащи стойности на желаната от вас позиция (в този случай в края). field()
функцията ще върне 0
за несъвпадащи стойности и ще ги постави в горната част на набора от резултати дори преди тези, започващи с A
.
Освен това можете да поръчате и по positions.colleague_position_id
както направих в примера, така че за много positions.colleague_position_id
които започват с една и съща буква, те пак ще бъдат подредени.