Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL ORDINE PER CAMPO con %

Questo dovrebbe darti il ​​massimo controllo su di esso:

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

Questo perché puoi inviare tutti i valori non corrispondenti alla posizione che desideri (in questo caso alla fine). Il field() funzione restituirà 0 per valori non corrispondenti e li metterà all'inizio del set di risultati anche prima di quelli che iniziano con A .

Inoltre, puoi anche ordinare per positions.colleague_position_id come ho fatto nell'esempio, in modo che per molti positions.colleague_position_id che iniziano con la stessa lettera saranno ancora in ordine.