按优先级排序不按字母顺序

Boo*_*oza 4 mysql sql-order-by

我正在尝试优先考虑我的查询ticket_priority_id.

ID被归类为ASAP,HIGH,MED,LOW.

当我按顺序排序时,ticket_priority_id总是按字母顺序排列(LOW超前MED).

我怎样才能做到这一点,我可以按顺序ticket_priority_id但不按字母顺序排序,但重要性.我想要订单(从上到下)ASAP- HIGH- MED-LOW

Lie*_*ers 8

您可以在订单中使用case语句

ORDER BY 
   CASE WHEN ticket_priority_id = 'ASAP' THEN 1
        WHEN ticket_priority_id = 'HIGH' THEN 2
        WHEN ticket_priority_id = 'MED' THEN 3
        WHEN ticket_priority_id = 'LOW' THEN 4
        ELSE 5
   END
Run Code Online (Sandbox Code Playgroud)


fth*_*lla 5

你可以使用FIELD函数:

ORDER BY
  FIELD(ticket_priority_id, 'ASAP', 'HIGH', 'MED', 'LOW')
Run Code Online (Sandbox Code Playgroud)

请注意,如果ticket_priority_id以下列表中没有,它将返回0,因此您可能还想添加以下内容:

ORDER BY
  ticket_priority_id NOT IN ('ASAP', 'HIGH', 'MED', 'LOW'),
  FIELD(ticket_priority_id, 'ASAP', 'HIGH', 'MED', 'LOW')
Run Code Online (Sandbox Code Playgroud)

将没有优先级的行放在底部而不是顶部.