MYSQL 按文本排序

Posted

技术标签:

【中文标题】MYSQL 按文本排序【英文标题】:MYSQL order by text 【发布时间】:2015-12-31 15:12:02 【问题描述】:

好的,我知道如何按 id 或数字排序

$getTicket = $sql->query("SELECT * FROM `ticket` 
                          WHERE `user`='$user->name' 
                          ORDER BY `id` DESC");

我在工单表中有状态,其中我有 3 件事:

1) 已回答 2) 未回答 3) 已完成

我想这样排序:

1) 未答复 2) 已回答 3) 完成

有没有办法做到这一点?

【问题讨论】:

欺骗Ordering by specific field value first 【参考方案1】:

做简单的事-

ORDER BY FIELD(Status, 'Unanswered', 'Answered', 'Done')

【讨论】:

【参考方案2】:

一般可以使用case

SELECT * FROM `ticket` 
WHERE `user` = '$user->name' 
ORDER BY case when Status = 'Unanswered' then 1
              when Status = 'Answered' then 2
              else 3
         end

mysql 特定的 find_in_set

SELECT * FROM `ticket` 
WHERE `user` = '$user->name' 
ORDER BY find_in_set(Status, 'Unanswered,Answered,Done')

【讨论】:

以上是关于MYSQL 按文本排序的主要内容,如果未能解决你的问题,请参考以下文章