Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL ORDER BY FIELD avec %

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.