SQL中Where和Having的区别---正确理解
来源:互联网 发布:meta分析数据库 编辑:程序博客网 时间:2024/05/29 09:06
Where和Having到底有啥区别,相信很多人都有过困扰,本人之前也是似懂非懂,前几天接了阿里的一个电话面试,数据库的部分就被这个问题给难倒了,支支吾吾只说了“在不能用where的时候就应该选择having”,其他的啥也不会了。
今天写sql时又用了having(虽然还是不太懂这是啥玩意),于是空下来终于狠查一波资料,现在总算有了一些眉目了。
首先从整体声明的角度来理解:
“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;
“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。
因为聚合函数是比较where和having的关键,所以先说下聚合函数。所谓聚合函数,是对一组值进行计算并且返回单一值的函数,在sql中常见于下面几个字眼:sum---求和,count---计数,max---最大值,avg---平均值等。
接下来从使用的角度:
where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前,如下面这个sql语句:
select sum(score) from student group by student.sex where sum(student.age)>100;
having既然是对查出来的结果进行过滤,那么就不能对没有查出来的值使用having,如下面这个sql语句:
select student.id,student.name from student having student.score >90;
下面给出一个where 和 having组合使用的sql语句:
selectsum(score)from student where sex='man'groupby name havingsum(score)>210;
- SQL中Where和Having的区别---正确理解
- SQL中where 和 having的区别
- SQL 中having 和where的区别
- SQL中WHERE 和HAVING的区别
- SQL中where 和 having的区别
- SQL 中having 和where的区别
- SQL 中having 和where的区别
- SQL中where 和 having的区别
- SQL中WHERE 和HAVING的区别
- SQL中where和having的区别
- SQL中 WHERE和HAVING的区别
- SQL 中having 和where的区别
- SQL中where和having的区别
- sql中having和where的区别
- sql中having和where的区别
- SQL中where和having的区别
- 正确理解MySQL中的where和having的区别
- SQL 中 Having 和 Where 区别
- python selenium模块学习
- mysql分页获取到重复数据
- 【十八掌●内功篇】第六掌:YARN之架构和原理
- 使用 C 语言打开浏览器
- 数据挖掘模型中的IV和WOE详解
- SQL中Where和Having的区别---正确理解
- 如何获取当前设备的机型(更新到iPhoneX)?判断机型是否为iPhone X?
- ADC详解
- http协议调试代理工具Fiddler的简单安装和使用
- 1063. 计算谱半径(20)
- Python 连接数据库
- CSDN访客统计使用flagcounter
- 专心致志来创新,酒香也怕巷子深——锐捷
- Mac下为命令定义别名, 让使用体验与你使用Linux一致