これにより、それを最大限に制御できるはずです:
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
これは、一致しないすべての値を目的の位置(この場合は最後)に送信できるためです。 field() 関数は0を返します 一致しない値の場合、Aで始まる値の前でも結果セットの先頭に配置されます 。
さらに、positions.colleague_position_idで注文することもできます 例で行ったように、多くのpositions.colleague_position_id 同じ文字で始まるものは、引き続き順番に表示されます。