zoukankan      html  css  js  c++  java
  • 写出了一条有点难度的sql语句。

    表结构如下

    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),问题解决了!

  • 相关阅读:
    Linux的命令2
    运维书
    管理MariaDB
    MariaDB基础命令
    Linux创建桥接网络
    聚合网络
    kickstart
    VLAN原理
    进程优先和ACL
    计划任务at、crontab
  • 原文地址:https://www.cnblogs.com/lindping/p/2004849.html
Copyright © 2011-2022 走看看