Isso deve dar a você o maior controle sobre ele:
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
Isso ocorre porque você pode enviar todos os valores não correspondentes para a posição desejada (neste caso, no final). O
field()
função retornará 0
para valores não correspondentes e os colocará no topo do conjunto de resultados antes mesmo daqueles que começam com A
. Além disso, você também pode fazer pedidos por
positions.colleague_position_id
como fiz no exemplo, de modo que para muitos positions.colleague_position_id
que começam com a mesma letra eles ainda estarão em ordem.