Dette burde give dig mest kontrol over det:
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
Dette skyldes, at du kan sende alle ikke-matchende værdier til den position, du ønsker (i dette tilfælde til sidst). field()
funktion returnerer 0
for ikke-matchende værdier og vil placere dem øverst i resultatsættet selv før dem, der starter med A
.
Derudover kan du også bestille efter positions.colleague_position_id
som jeg gjorde i eksemplet, så for mange positions.colleague_position_id
der starter med det samme bogstav, vil de stadig være i orden.