有两个思路
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的清丰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
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;
但这种只能按指定排序,你这种多种排序,有困难。
可以看看上面两种方法结合或许有更好的方法。
select * from tab order by date DESC,table_id DESC。
在数据库中,输入这些就可以按时间排序。
MySQL 是一个关系型数据库,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP ,Linux和 Apache 可组成良好的开发环境,经过多年的web技术发展,在业内被广泛使用的一种web服务器解决方案之一,称之为LAMP。
例子语句(表名TAB1,时间字段D1,D2,D3,D4,D5):
SELECT GREATEST(D1,D2,D3,D4,D5), ......
FROM TAB1
ORDER BY 1 DESC
说明,需要使用GREATEST函数,不能用MAX,MAX是计算列最大值的。
-------------------------------------------方法1
select * from (
select
tablename_tmp.*,
@rownum:=@rownum+1 ,
if(time =DATE_FORMAT(now(),'%Y-%m-%d %H:00') ,@rank:=@rank+1,@rank:=0) as rank
from (
select * from tablename order by time desc
)
tablename_tmp ,
(select @rownum :=0 , @ptime := null ,@rank:=0) a
) a
order by rank desc ,time desc
---------------------------------------方法2
select * from tablename order by
(case when DATE_FORMAT(time ,'%k')=0 then 24 when DATE_FORMAT(time ,'%k')*1=DATE_FORMAT(now(),'%k')*1 then DATE_FORMAT(time ,'%k') else 25 end) ,time desc
题主测试一下?你这里的24点应该是第二天的00:00:00 。你这样排有什么用处?
在MySQL中,可以指定按照多个字段进行排序。例如,可以使employee表按照d_id字段和age字段进行排序。排序过程中,先按照d_id字段进行排序,遇到d_id字段的值相等的情况时,再把d_id值相等的记录按照age字段进行排序。
查询employee表中的所有记录,按照d_id字段的降序方式和age字段的升序方式进行排序。