啰嗦点:

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

随机推荐

  1. Zabbix 监控触发器设置

    简述 在生产环境中,有一台mysql的备份服务器,上面运行着三个数据库实例的从库,也在做日志的同步工作,为了实现对该备份服务器的监控,当出现从库实例不为3或者日志同步进程不为3的时候,产生告警通知,生 ...

  2. C# activex开发中 axwebbrowser控件及 IE浏览器设置

    <object type='application/x-vlc-plugin' id='vlc' events='True' codebase='../cab/axvlc.cab' classi ...

  3. 深度学习二、CNN(卷积神经网络)概念及理论

    一.卷积神经网络(CNN) 1.常见的CNN结构有:LeNet-5.AlexNet.ZFNet.VGGNet.ResNet等.目前效率最高的是ResNet. 2.主要的层次: 数据输入层:Input ...

  4. 自搭的一个系统框架,使用Spring boot+Vue+Element

    基于:jdk1.8.spring boot2.1.3.vue-cli3.4.1 特性:    ~ 数据库访问使用spring data jpa+alibaba druid    ~ 前后端数据交互使用 ...

  5. 微信小程序button组件样式

    点击微信按键组件才能出授权,所以自定义样式就是必须的了,来自网友的帮助,如下图 <button class='btn1' open-type='contact'> <image cl ...

  6. win-DOS命令整理

    1 md 建 文件夹2 cd 指向文件夹方向cd .. 进入上一级文件夹cd \ 回到根目录3 rd 删除文件夹4 dir 查看文件夹里的文件 dir /a 查看文件夹内全部文件含隐藏文件 5 ren ...

  7. Linux系统GNOME主题安装与Tweaks工具使用

    需要软件: GNOME Tweaks--使主题修改更加容易一个工具 安装主题: 下载主题:mac themes下载链接:https://www.gnome-look.org/p/1241688/ 这里 ...

  8. Java Socket 服务端发送数据 客户端接收数据

    服务端: package com.thinkgem.wlw.modules.api.test.socket; /** * @Author: zhouhe * @Date: 2019/4/8 9:30 ...

  9. easyui datagrid使用按钮

    $('#datagrid').datagrid({ border:false, fitColumns:true, singleSelect: true, url:url, columns:[[ {fi ...

  10. 清北学堂2019NOIP提高储备营DAY1

    今天是第二次培训的第一天,关于NOIP的基础算法,主要内容如下: $1.枚举 $2.搜索 $3.贪心 $1.枚举: •定义: 枚举又叫做穷举,是一种基础的算法,其思路主要是:从问题中有可能的解集中一一 ...