比如我有一个比赛表,里面存储着好多个比赛,每个比赛都有开始时间和结束时间。我的sql语句怎么写,能按照比赛的状态进行中
, 即将开始
, 已结束
,这三个状态先后展示呢?
如果涉及到分页该怎么实现呢?
谢谢各位大拿!!
我看网上有的人说用一个新字段status
来表示比赛的状态,比如进行中是2,即将开始是1,已结束是0,然后对status排序。可是这样的话,我每次都得先获取当前时间,然后对比所有比赛的开始时间和结束时间,再把需要的状态都更新一次。然后才能按照status
排序。
比如我有一个比赛表,里面存储着好多个比赛,每个比赛都有开始时间和结束时间。我的sql语句怎么写,能按照比赛的状态进行中
, 即将开始
, 已结束
,这三个状态先后展示呢?
如果涉及到分页该怎么实现呢?
谢谢各位大拿!!
我看网上有的人说用一个新字段status
来表示比赛的状态,比如进行中是2,即将开始是1,已结束是0,然后对status排序。可是这样的话,我每次都得先获取当前时间,然后对比所有比赛的开始时间和结束时间,再把需要的状态都更新一次。然后才能按照status
排序。
根据你网上看的,你可以写一个定时脚本,每X秒/分钟跑一次,更新数据。
然后sql类似如下
select * from table_name where status = 比赛中;
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
比如有上面的表,林丹的已经结束,李宗伟的正在进行,谌龙的还没有开始,
可以写下面的语句:
使用了MySQL的 if 判断,当然如果更复杂也可以使用case语句
zt表示状态,1表示结束,2表示正在进行,3表示还没有开始。
这条SQL语句的逻辑是:
如果当前时间介于开始和结束之间,那就是进行中[2]
否则再次判断,如果当前时间大于结束时间,那就是已经结束[1]
再否则,就是剩下的那种情形还没有开始[3]
分页直接使用limit就可以了。