MySQL按文本排序


MySQL order by text

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

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

我在票表中有Status,其中我有3个东西:

  1. 回答

我想这样排序:

  1. 回答

有办法做到这一点吗?

做简单的-

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

一般可以使用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')