mysql - sql语句 按照比赛的状态排序
本文介绍了mysql - sql语句 按照比赛的状态排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
比如我有一个比赛表,里面存储着好多个比赛,每个比赛都有开始时间和结束时间。我的sql语句怎么写,能按照比赛的状态进行中
, 即将开始
, 已结束
,这三个状态先后展示呢?
如果涉及到分页该怎么实现呢?
谢谢各位大拿!!
我看网上有的人说用一个新字段status
来表示比赛的状态,比如进行中是2,即将开始是1,已结束是0,然后对status排序。可是这样的话,我每次都得先获取当前时间,然后对比所有比赛的开始时间和结束时间,再把需要的状态都更新一次。然后才能按照status
排序。
解决方案
比如有上面的表,林丹的已经结束,李宗伟的正在进行,谌龙的还没有开始,
可以写下面的语句:
使用了MySQL的 if 判断,当然如果更复杂也可以使用case语句
select if (now() between start_time and end_time, 2, if ( now()>end_time, 1,3)) as zt FROM `match`.badminton order by zt desc limit 0,10;
zt表示状态,1表示结束,2表示正在进行,3表示还没有开始。
这条SQL语句的逻辑是:
如果当前时间介于开始和结束之间,那就是进行中[2]
否则再次判断,如果当前时间大于结束时间,那就是已经结束[1]
再否则,就是剩下的那种情形还没有开始[3]
分页直接使用limit就可以了。
这篇关于mysql - sql语句 按照比赛的状态排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文