查询 count的问题

XFliangwh 2008-01-15 09:58:14
有一个登录记录表

ID date
1 2007-08-10
1 2007-09-11
2 2007-09-12
1 2007-12-1
2 2008-1-1

我想显示07年十月份的登录次数
要显示为
Id count
1 0
2 0

我用select Id,count(Id) from table1 where month(date)=10 group by Id;是不显示where条件中没有的数据的,有什么办法可以显示上面的表?

(显示的不仅要某个月的登录,有时还有显示近一周或近一个月的登录次数,mysql数据库)
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
developCpp 2008-01-16
  • 打赏
  • 举报
回复
mark
XFliangwh 2008-01-15
  • 打赏
  • 举报
回复
谢谢tim_spac的回答,是有点接近了,不过b.cnt显示出来的是null不是0啊。

我是把结果显示在delphi的表格里的,null是不会显示为0的。
tim_spac 2008-01-15
  • 打赏
  • 举报
回复
select a.id, b.cnt as cnt
from (
select distinct id
from logs) as a
left join (
select id, count(1) as cnt
from logs
where date between @bgnDate and @endDate
group by id) as b on a.id=b.id;
XFliangwh 2008-01-15
  • 打赏
  • 举报
回复
谢谢你的回答。
但是如果人家要查某一天呢,总不能把所有的日子记下来吧,你的方法早用过了,所以我才加了最后一句,有时要查某一周的记录的。
liangCK 2008-01-15
  • 打赏
  • 举报
回复
先生成一个该年的月份表1到12的..
再用Left Join去连接你上面这个表
加个where去限制条件就行.
tim_spac 2008-01-15
  • 打赏
  • 举报
回复
select a.id, isnull(b.cnt,0) as cnt
from (
select distinct id
from logs) as a
left join (
select id, count(1) as cnt
from logs
where date between @bgnDate and @endDate
group by id) as b on a.id=b.id;
liangCK 2008-01-15
  • 打赏
  • 举报
回复
ifnull(b.cnt,0) cnt

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧