mysql排序问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql排序问题相关的知识,希望对你有一定的参考价值。

先谢谢!我有两个时间点,2014-01 和2014-07这两个,我想查询出这两时间点中每个月的新进人员数,这样写了SELECT DATE_FORMAT(join_date,'%Y-%m') as label,count(*) as value from hr_recruit_base WHERE DATE_FORMAT(join_date,'%Y-%m') between '2014-01' and '2014-07' group by month(join_date);可是会遇到这样的问题,假使2月份没有新进来的员工,那么查询结果时就不会列出2月份的数据,只显示有员工进来的月分和数据。现在我是想把每一个月份的数据都列出来,如果这个月份没新员工进来就用一个0去顶替,而不是不显示在结果里面。不知道说明白了没,谢谢!

我这里没数据,拿你的改写的,你这样看看

select t1.t_month,
sum(case when t1.t_month=DATE_FORMAT(t2.join_date,\'%Y-%m\') then 1 else 0 end)
from
(select substr(DATE_ADD(DATE(\'2014-01-01\'),INTERVAL t.rn MONTH),1,7) t_month
FROM (SELECT @rownum:=@rownum+1 AS rn FROM (SELECT @rownum:=-1) r, information_schema.TABLES) t
where t.rn<=month(\'2014-07-01\')-month(\'2014-01-01\')) t1
left join hr_recruit_base t2
on t1.t_month=DATE_FORMAT(t2.join_date,\'%Y-%m\')
group by t1.t_month

有问题及时反馈

追问

其实时间是任意两个值的,只知道end_date大于start_date,我试着用上面方法改的时候好像得不到我想要的结果,就是把所有月份都列出来,包括数据为0的!!谢谢你的回答

追答

私信你,查收一下,浏览器右上角

参考技术A order
by
n1
desc,n2,n3,n4,n5,n6
字段间用逗号分开,desc是倒序
asc是升序排列(默认可省略)
如果要调整字段的先后顺序,就修改字段顺序就可以了

以上是关于mysql排序问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL(mysql)排序表并获取其在排序表中的位置的行?

sql多表分组查询并排序的问题

mysql语句,分组去重,排序问题

mysql分组排序,取每组第一条数据

在mysql中对时间排序并且对用户去重的sql 该怎么写

MySql 字段排序