Cela devrait vous donner le plus de contrôle possible :
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
En effet, vous pouvez envoyer toutes les valeurs non correspondantes à la position souhaitée (dans ce cas, à la fin). Le field()
la fonction renverra 0
pour les valeurs non correspondantes et les placera en haut du jeu de résultats avant même celles commençant par A
.
De plus, vous pouvez également commander par positions.colleague_position_id
comme je l'ai fait dans l'exemple, de sorte que pour de nombreux positions.colleague_position_id
qui commencent par la même lettre, ils seront toujours dans l'ordre.