Esto debería darle el mayor control sobre él:
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
Esto se debe a que puede enviar todos los valores que no coincidan a la posición que desee (en este caso, al final). El field()
la función devolverá 0
para valores que no coinciden y los colocará en la parte superior del conjunto de resultados incluso antes de los que comienzan con A
.
Además, también puede ordenar por positions.colleague_position_id
como hice en el ejemplo, de modo que para muchos positions.colleague_position_id
que comiencen con la misma letra seguirán estando en orden.