having 与where的不同

MIN(), MAX()是聚合函数.
group by 后面是要跟着的 select 中所有不是聚合函数的字段。
ex1:  select count(*) from emp;         //只是查询总总数 emp这张表里一共有多少条记录 所以不用group by
ex2:  select count(*) , deptno from emp group by deptno;  
                    // 根据deptno 分组, 查到的数据就是  列出 不同部门 记录总数  
         select count(*) ,  deptno ,  comm from emp group by deptno , comm;
                    // 根据deptno 和 comm 分组  以此类推
                       group by 后面是要跟着的 select 中所有不是聚合函数的字段   否则会报错。

举例:having avg(sal)>2000
having 相当于where 与where的唯一区别是 当查询语句中有 聚合函数 的时候 就不能用where 了 只能用having
having总结:
  1、

 having先对数据进行分组,然后再进行过滤,因此先使用group by进行分组
  2、 如果没有使用group by,而使用having,这是将所有数据当成一组进行过滤
  3、 having 不可以出现分组后的组内详细信息
  4、 且如果where和having同时存在的话,where必须写在having前面
  5、跟where的区别:
    having先对数据进行分组,然后再进行过滤
    where先将数据进行过滤,然后分组,因此where不能对统计信息进行过滤
死的顺序:

posted @ 2012-10-12 11:30  xiaolongxia  阅读(164)  评论(0)    收藏  举报