表结构:
id--------------name--------------addtime
1 a 2014-01-01 02:30:21
1 b 2014-01-03 03:20:02
1 c 2014-01-03 06:10:30
1 d 2014-01-06 11:30:15
1 e 2014-01-06 11:10:18
1 f 2014-01-06 12:30:19
想要达到查询结果:
addtime---------------count
2014-01-01 1
2014-01-02 0
2014-01-03 2
2014-01-04 0
2014-01-05 0
2014-01-06 3
请教各位大神这个SQL要怎么写?
13 个解决方案
#1
用保存所有日期的表与工作表连接处理
#2
具体的SQL要怎么写呢?
#3
先用SP生成日期
select addtime,count(*)-1 from (
select * from lsb
union all
select name,addtime from tt) a
group by addtime
select addtime,count(*)-1 from (
select * from lsb
union all
select name,addtime from tt) a
group by addtime
#4
我这是一个表的,你这个SQL要查两个表啊?
#5
当然,MYSQL不支持递归查询
#6
这么说,那我只是一个表的,没办法靠SQL查出来了么?
#7
yes
#8
你需要另外一张日历表,然后做 left join ,这是最通用的方法。
其它可以使用存储过程,或者自己硬写一个 (select 1 union select 2 union select 3 union .. union select 1000) c 去left join
其它可以使用存储过程,或者自己硬写一个 (select 1 union select 2 union select 3 union .. union select 1000) c 去left join
#9
谢谢两位,以后碰到类似的问题知道怎么解决了~~~不过这次我用其他方式解决了
#10
请教一下这个问题是怎么解决的?我也遇到这个问题了
#11
想知道楼主怎么解决的
#12
同上,想知道楼主怎么解决的
#13
select left(时间,10) as time,count(*) from 表名
group by left(时间,10) order by time
group by left(时间,10) order by time
#1
用保存所有日期的表与工作表连接处理
#2
具体的SQL要怎么写呢?
#3
先用SP生成日期
select addtime,count(*)-1 from (
select * from lsb
union all
select name,addtime from tt) a
group by addtime
select addtime,count(*)-1 from (
select * from lsb
union all
select name,addtime from tt) a
group by addtime
#4
我这是一个表的,你这个SQL要查两个表啊?
#5
当然,MYSQL不支持递归查询
#6
这么说,那我只是一个表的,没办法靠SQL查出来了么?
#7
yes
#8
你需要另外一张日历表,然后做 left join ,这是最通用的方法。
其它可以使用存储过程,或者自己硬写一个 (select 1 union select 2 union select 3 union .. union select 1000) c 去left join
其它可以使用存储过程,或者自己硬写一个 (select 1 union select 2 union select 3 union .. union select 1000) c 去left join
#9
谢谢两位,以后碰到类似的问题知道怎么解决了~~~不过这次我用其他方式解决了
#10
请教一下这个问题是怎么解决的?我也遇到这个问题了
#11
想知道楼主怎么解决的
#12
同上,想知道楼主怎么解决的
#13
select left(时间,10) as time,count(*) from 表名
group by left(时间,10) order by time
group by left(时间,10) order by time