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 按文本排序的主要内容,如果未能解决你的问题,请参考以下文章

MySQL按出现次数排序

如何按热门字段(文本字段)对聚合进行排序?或者是不是有可能按文本字段对聚合进行排序(不使用_term)

利用Linux命令行进行文本按行去重并按重复次数排序

Angular 5 按日期、文本、数字排序

linux bash按'yymmdd'而不是'ddmmyy'列格式对文本文件进行排序,然后按时间排序,然后删除重复项

按文本宽度iOS对UITableView排序