Questo dovrebbe darti il massimo controllo su di esso:
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
Questo perché puoi inviare tutti i valori non corrispondenti alla posizione che desideri (in questo caso alla fine). Il field()
funzione restituirà 0
per valori non corrispondenti e li metterà all'inizio del set di risultati anche prima di quelli che iniziano con A
.
Inoltre, puoi anche ordinare per positions.colleague_position_id
come ho fatto nell'esempio, in modo che per molti positions.colleague_position_id
che iniziano con la stessa lettera saranno ancora in ordine.