having使用
啰嗦点:
where子句用来筛选 from子句中指定的操作所产生的行。
group by 子句用来分组 where子句的输出。
having子句用来从分组的结果中筛选行。
对于可以在分组操作之前或之后应用的任何搜索条件,在 where子句中指定它们会更有效。这样可以减少必须分组的行数。应当在 having子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。
简单点:
select ··· from ···
where ···(只能对分组前的属性进行筛选)
group by ···
having ···(只能对分组后的每个组的整体属性进行筛选,用聚合函数体现)
以上四个命令是从大到小依次进行过滤
举个栗子:
我们如果就是查询每个部门成绩大于89的员工数,可以这样写:
SELECT dept,count(name) FROM user WHERE score>89 GROUP BY dept;
上面用到where是在分组前限制,如何用having呢? 上面的基础上再加一个条件,查询部门人数大于1的部门。
那么我们是先要统计出每个部门的人数,也就是要用count聚合函数,然后再看哪些部门的人数是多于1人的
也就是筛选条件是在聚合之后的,这时where已不能满足使用,我们就需要用到having了
SELECT dept,count(name) nums FROM user GROUP BY dept HAVING nums >1;
注:
having后面跟的条件判断的字段必须是聚合函数返回的结果,否则sql会报错,例如:
SELECT dept,count(name) nums FROM user GROUP BY dept HAVING score >1;
参考:
https://blog.csdn.net/u013182960/article/details/80819505
http://www.cnblogs.com/doudouxiaoye/p/5798623.html
https://blog.csdn.net/qq_24556707/article/details/79552324
随机推荐
- css解决内联元素间的空白间隔
在内联元素的父级元素上设置font-size: 0px;即可.例如: <div class="wrap"> <ul> <li class=" ...
- LeetCode-两数之和
Question 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...
- 关于4A系统(我对4A系统的维护的理解)
4A系统 4A系统是统一安全管理平台解决方案,指认证Authentication.账号Account.授权Authorization.审计Audit,中文名称为统一安全管理平台解决方案.即将身份认证. ...
- 当前标识没有对“C:\WINDOWS\Microsoft.NET\...”的写访问权限的解决办法
1.需要重新注册IIS服务扩展,在开始运行中输入以下命令运行:aspnet_regiis -i 32位的Windows: --------------------------------------- ...
- jq常用事件(on,blur,focus,change),js/jq等待图片(页面)加载完毕事件,js读取文件
jq常用事件(on,blur,focus,change) // 方法一(推荐) $('.box').on( "click",function() {} ) $('.box').on ...
- linux常用系统指令
[linux常用系统指令] 查看内核版本:cat /proc/version 查看发行版本:cat /etc/issue 通过安装lsb的方式查看发行版本: yum provides */lsb_re ...
- ultraEdit软件比较两个文件内容的不同处
1.软件名称为:UltraEdit ,安装并打开软件; 软件图标: 打开软件如图所示: 2.点击导航图标,蓝色上面有Uc图标,该图标名称为“比较文件” 如图位置: 3.弹出框,根据文件路径选择好比较的 ...
- spring.http.multipart.maxFileSize提示无效报错问题处理
在SpringBoot项目中,配置spring.http.multipart.maxFileSize用于限定最大文件上传大小. 但是,SpringBoot版本不同,关于这一块的配置也不相同. 1.Sp ...
- Grunt 一个专为JavaScript提供的构建工具
新手最好找个视频来看看, Grunt的配置及使用(压缩合并js/css) - 每天都记录一点点! - CSDN博客https://blog.csdn.net/playboyanta123/articl ...
- C# 用Serializer.ToXml()方法转换成两种格式的XML
常见XML格式两种: 这种是属性的格式,实体的Model属性上面加上这个特性 [XmlAttribute] <AAA aa="/> 这种是标签的格式,实体的Model属性上面加上 ...