これにより、それを最大限に制御できるはずです:
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
同じ文字で始まるものは、引き続き順番に表示されます。