我在开发的时候碰到这样一个需求:
一个任务它有三种状态:等待,进行和完成,分别对应字符串"1"、"2"、"3"。
我希望将多个任务返回的时候,能够优先将状态为进行的任务返回在列表前面,其次是等待状态的任务,最后是完成状态的任务。
这个时候,我们就需要借助case when then来实现这种功能。
SQL语句如下:
select * from task
order by
case status
when status = "2" then 3
when status = "1" then 2
when status = "3" then 1
else 0 end, status desc