当前遇到一项目的活动排序需求是:
活动列表,排序要做如下修改:
1、首先根据活动状态排序;进行中 => 未开始 => 已结束来排
2、已经结束的活动,要按“开始时间”的倒序来排
3、进行中,未开始的活动,要按“开始时间”的顺序来排
因为在开始是设计的活动状态序号是:1、未开始,2、进行中,3、已结束,因此导致排序稍微变的复杂
以下是我详细的排序实现:
select *
from act
order by
case when status=2 then 0 ELSE 4 END, // 先对进行中的状态进行替换,然后按顺序排
status ASC,
case when status = 1 then btime end, // 然后对相应状态进行不同的排序处理
case when status = 2 then btime end,
case when status = 3 then btime end desc;