啰嗦点:

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. Visual Studio Code 背景色自定义

    1 寻找主体配置文件:默认的颜色主题配置文件都位于$RELEASE/resources/app/extensions目录中.以theme-开头的目录即为颜色主题配置(事实上,其中有些是文件图标主题). ...

  2. IDEA 常用配置

    调节代码字体大小 设置:File --- Settings... --- Editor --- General --- 勾选Change font size(Zoom) with Ctrl + Mou ...

  3. netty的简单的应用例子

    一.简单的聊天室程序 public class ChatClient { public static void main(String[] args) throws InterruptedExcept ...

  4. hadoop记录-浅析Hadoop中的DistCp和FastCopy(转载)

    DistCp(Distributed Copy)是用于大规模集群内部或者集群之间的高性能拷贝工具. 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成. 它把文件和目录的列表作为ma ...

  5. python--协程之特别篇

    Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...

  6. Basic 001 Bob

    Instructions Bob is a lackadaisical teenager. In conversation, his responses are very limited.Bob an ...

  7. js同步、异步、延时、无阻塞加载

    一.同步加载 平常默认用的都是同步加载.如:<script src="http://yourdomain.com/script.js"></script> ...

  8. LOJ #6485 LJJ 学二项式定理

    QwQ LOJ #6485 题意 求题面中那个算式 题解 墙上暴利 设$ f(x)=(sx+1)^n$ 假设求出了生成函数$ f$的各项系数显然可以算出答案 因为模$ 4$的缘故只要对于每个余数算出次 ...

  9. Scrapy+Scrapy-redis+Scrapyd+Gerapy 分布式爬虫框架整合

    简介:给正在学习的小伙伴们分享一下自己的感悟,如有理解不正确的地方,望指出,感谢~ 首先介绍一下这个标题吧~ 1. Scrapy:是一个基于Twisted的异步IO框架,有了这个框架,我们就不需要等待 ...

  10. c++ 入门 之 hello world 和基本语法

    1,linux系统上如何跑c++程序 1,vim一个hello.cpp,内容如下: #include <iostream> using namespace std; int main() ...