To by vám mělo poskytnout největší kontrolu:
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
Všechny neshodné hodnoty totiž můžete poslat na požadovanou pozici (v tomto případě na konci). field() funkce vrátí 0 pro neshodné hodnoty a umístí je na začátek sady výsledků ještě před ty, které začínají A .
Kromě toho můžete také objednávat podle positions.colleague_position_id jako jsem to udělal v příkladu, takže pro mnoho positions.colleague_position_id které začínají stejným písmenem, budou stále v pořadí.