mysql中having语句与where语句的用法与区别, 对数据分组的总结
2014-06-09 10:21
531 查看
■ 对数据分组的总结
1分组函数只能出现在选择列表、having、order by子句种
2 如果在select 语句种同时包含有group by ,having ,order by 那么他们的顺序是group by , having , order by
3 在选择列种如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错
如select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;
这里deptno就一定要出现在 group by 中
select max(sal),min(sal),deptno,job from emp group by deptno,job
having max(sal) > 5000 order by
max(sal) desc;
http://www.phpzixue.cn/detail338.shtml
我们在写sql语句的时候,经常会使用where语句,很少会用到having,其实在mysql中having子句也是设定条件的语句与where有相似之处但也有区别。having子句在查询过程中慢于聚合语句(sum,min,max,avg,count).而where子句在查询过程中则快于聚合语句(sum,min,max,avg,count)。
简单说来:
where子句:
select sum(num) as rmb from order where id>10
//只有先查询出id大于10的记录才能进行聚合语句
having子句:
select reportsto as manager, count(*) as reports from employees
group by reportsto having count(*) > 4
以test库为例.having条件表达示为聚合语句。肯定的说having子句查询过程慢于聚合语句。
再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。
对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。
having就是来弥补where在分组数据判断时的不足。因为where要快于聚合语句。
1分组函数只能出现在选择列表、having、order by子句种
2 如果在select 语句种同时包含有group by ,having ,order by 那么他们的顺序是group by , having , order by
3 在选择列种如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错
如select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;
这里deptno就一定要出现在 group by 中
select max(sal),min(sal),deptno,job from emp group by deptno,job
having max(sal) > 5000 order by
max(sal) desc;
http://www.phpzixue.cn/detail338.shtml
我们在写sql语句的时候,经常会使用where语句,很少会用到having,其实在mysql中having子句也是设定条件的语句与where有相似之处但也有区别。having子句在查询过程中慢于聚合语句(sum,min,max,avg,count).而where子句在查询过程中则快于聚合语句(sum,min,max,avg,count)。
简单说来:
where子句:
select sum(num) as rmb from order where id>10
//只有先查询出id大于10的记录才能进行聚合语句
having子句:
select reportsto as manager, count(*) as reports from employees
group by reportsto having count(*) > 4
以test库为例.having条件表达示为聚合语句。肯定的说having子句查询过程慢于聚合语句。
再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。
对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。
having就是来弥补where在分组数据判断时的不足。因为where要快于聚合语句。
相关文章推荐
- mysql中having语句与where语句的用法与区别
- mysql中having语句与where语句的用法与区别
- mysql group by内排序的实现以及having和where 条件语句查询的区别
- MySQL插入数据前检测唯一性的一些语句用法总结
- Mysql数据分组GROUP BY 和HAVING,与WHERE组合使用
- 对group by的结果集进行分组过滤 where 与 having 用法的区别
- mysql中having的用法(和where的区别)
- mysql的汇总函数、where和having的区别、sql select 语句顺序
- sql select语句中 having和where的区别用法及group by 的几种用法
- 关于mysql中 group by , order by , where, having 语句的区别与运用
- MySQL插入数据前检测唯一性的一些语句用法总结
- Mysql中Group By使用Having语句配合查询(where和having区别)
- MySQL :where 语句与Having 语句的区别
- Mysql数据分组GROUP BY 和HAVING,与WHERE组合使用
- having的用法及mysql中的where和having子句的区别
- mysql中using() having where 的用法区别
- sql语句:having子句与where子句用法与区别
- oracle基础琐碎总结-----Where和Having的区别与联系