我正在尝试按ticket_priority_id
优先处理我的查询。
这些ID分为ASAP
,HIGH
,MED
,LOW
。
当我按ticket_priority_id
订购时,它始终按字母顺序排列(LOW
位于MED
之前)。
我怎样才能做到这一点,我可以按ticket_priority_id
订购,但不是按字母顺序排序,而是按重要性排序。我想要订单(从上到下)ASAP
- HIGH
- MED
- LOW
答案 0 :(得分:8)
您可以在订单中使用案例陈述
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
答案 1 :(得分:5)
您可以使用FIELD功能:
ORDER BY
FIELD(ticket_priority_id, 'ASAP', 'HIGH', 'MED', 'LOW')
请注意,如果以下列表中没有ticket_priority_id
,它将返回0,因此您可能还想要添加以下内容:
ORDER BY
ticket_priority_id NOT IN ('ASAP', 'HIGH', 'MED', 'LOW'),
FIELD(ticket_priority_id, 'ASAP', 'HIGH', 'MED', 'LOW')
将没有优先级的行放在底部而不是顶部。