请问mysql 中 怎么实现这种排序,按照状态排序正序,再按照开始时间排序正序,

请问mysql中怎么实现这种排序,按照状态排序正序,再按照开始时间排序正序,如果状态是已结束的,需要按照开始时间降序排序... 请问mysql 中 怎么实现这种排序,按照状态排序正序,再按照开始时间排序正序,如果状态是已结束的,需要按照开始时间降序排序 展开
 我来答
abul阿宝
2017-01-23 · TA获得超过260个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:175万
展开全部

有两个思路

1、按照各自的活动状态先排序,插入到临时表,最后再union all所有结果集

create temporary table tmp1
select * from tb where 活动状态='筹备中' order by 开始时间;
create temporary table tmp2
select * from tb where 活动状态='进行中' and 开始时间 is not null order by 开始时间;
create temporary table tmp3
select * from tb where 活动状态='进行中' and 开始时间 is null;
create temporary table tmp4
select * from tb where 活动状态='已结束' order by 开始时间 desc;

(select * from tmp1)
union all
(select * from tmp2)
union all
(select * from tmp3)
union all
(select * from tmp4)

2、通过field函数自定义排序

select * from tb order by field(活动状态,'筹备中','进行中','已结束') asc,开始时间 asc;

但这种只能按指定排序,你这种多种排序,有困难。

可以看看上面两种方法结合或许有更好的方法。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式