写出了一条有点难度的sql语句。

来源:互联网 发布:linux pgm 编辑:程序博客网 时间:2024/04/27 18:35

表结构如下

a 表

网站webid,网站名称webname

b 表

用户userid,所属网站webid,注册时间regtime

要求:统计各个网站某天(yyyy-MM-dd)内用户注册数量

咋一看:很简单  select  a.id,a.name ,count(*)  as regnumber  from  a inner jion b on a.webid=b.webid  

where  datediff(d,b.regtime,'yyyy-MM-dd')=0 group by a.id,a.name

但是事情没有那么简单,如 果某网站在这一天没有用户注册,那么该网站不会被列出来,

所以要使用左连接:

select  a.id,a.name ,count(*)  as regnumber  from  a   LEFT OUTER JOIN  b on a.webid =b.webid  

where  datediff(d,b.regtime,'yyyy-MM-dd')=0 group by a.id,a.name

问题出现了,某行数据如果没有用户注册的情况下 count(*)得到的结果应该是0,但却总是显示为1

最后把count(*) 改为count(b.userid),问题解决了!

原创粉丝点击