一文让你彻底理解having和where的区别
having子句与where都是设定条件筛选的语句,有相似之处也有区别。
having与where的区别:
having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合
在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。
聚合语句(sum,min,max,avg,count)要比having子句优先执行,所有having后面可以使用聚合函数。而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count),所有where条件中不能使用聚合函数。
select sum(num) as rmb from order where id>10;
//先查询出id大于10的数据,再执行聚合语句sum(num)
//执行以下语句会报错,因为where子句先于sum(num)执行,执行where子句的时候还没有sum(num),所以会报错。
select sum(num) as rmb from order where sum(num)>10;
对分组数据再次判断时要用having
select reports,count(*) from employees group by reports having count(*) > 4;
//首先查询了select reports,count() from employees group by reports,在此基础上查找count() > 4的数据。
聚合函数:
例如SUM, COUNT, MAX, AVG等,这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
HAVING子句可以让我们直接筛选成组后的各组数据,也可以在聚合后对组记录进行筛选,而WHERE子句在聚合前先筛选记录,也就是说作用在GROUP BY 子句和HAVING子句前。
————————————————
版权声明:本文为CSDN博主「ryan007liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ryan007liu/article/details/91441479
一文让你彻底理解having和where的区别的更多相关文章
- css基础--深入理解opacity和rgba的区别
欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 首先这两个都与透明度有关,那么他们之间有什么具体的区别呢?在实际工作中我们需要注意什么呢?请您接着往下看 语法 1. rg ...
- 理解%r和%s的区别
理解%r和%s的区别 %r会重现所表达的对象,%s会将所有转成字符串 eg1: print('i am %s years old' % 22) print('i am %r years old' % ...
- 理解ArrayList与LinkedList的区别
一.先来看看ArrayList与LinkedList 在JDK中所在的位置 从图中可以看出,ArrayList与LinkedList都是List接口的实现类,因此都实现了List的所有未实现的方法,只 ...
- IL角度理解for 与foreach的区别——迭代器模式
IL角度理解for 与foreach的区别--迭代器模式 目录 IL角度理解for 与foreach的区别--迭代器模式 1 最常用的设计模式 1.1 背景 1.2 摘要 2 遍历元素 3 删除元素 ...
- 一文让你彻底理解 Java NIO 核心组件
背景知识 同步.异步.阻塞.非阻塞 首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下. 同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节). 异步:相对于同 ...
- 一文带你深入理解JVM,看完之后你还敢说你懂JVM吗?颠覆you认知
前言 今天带大家深入理解JVM,从入门到精通,希望大家能够喜欢~~~ 概念 JVM是可运行 Java 代码的假想计算机 ,包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收,堆 和 一个存储方法域 ...
- 关于Cewu Lu等的《Combining Sketch and Tone for Pencil Drawing Production》一文铅笔画算法的理解和笔录。
相关论文的链接:Combining Sketch and Tone for Pencil Drawing Production 第一次看<Combining Sketch and Tone f ...
- 关于MFC视图文档框架的理解-1
一.单个文档和多个文档的区别: MFC分为对话框程序,单文档程序和多文档程序. 单个文档程序:一个主框架内仅允许打开一个视图,若要打开另一个,则当前的文档必须得关闭.单文档程序可以打开不同格式的文档. ...
- 一文带你彻底理解Linux的各种终端类型及概念
每天使用Linux每天都要接触到Bash,使用Bash时似乎永远都让人摸不着头脑的概念就是终端,坐在这台运行着Linux的机器的显示器前面,这个显示器就是终端的输出,而插在机器上的USB键盘或者PS/ ...
随机推荐
- 【翻译稿】Behavior Driven Development (BDD)行为驱动开发
这是一篇翻译稿,方便给不知道BDD的同学扫盲.原文链接:What is BDD (Behavior Driven Development)? | Agile Alliance Definition定义 ...
- javascript(js)反转字符串
网上看到的都是这个写法较多: str.split('').reverse().join(''); 这里发现一个ES6的写法也可以达到同样的效果: Array.from(str).reverse().j ...
- 详解 OpenGL ES 2.x 渲染流程
khronos官方对OpenGL ES的描述如下: OpenGL ES is a royalty-free, cross-platform API for rendering advanced 2D ...
- C# WPF 后台调整怎样使用代码把指定控件的Z序调整到最前面呢?
Panel.SetZIndex(rectangle1, 2); //把前台名称为rectangle1的矩形的ZIndex设置为2
- visual studio如何检查内存泄露?
Visual Studio有专门的插件叫做Visual Leak Detector (VLD)Visual Leak Detector for Visual C++ 2008/2010/2012/20 ...
- 【开发工具】idea常用配置
1. 设置鼠标滚轮修改字体大小 我们可以勾选此设置后,增加Ctrl + 鼠标滚轮 快捷键来控制代码字体大小显示. 2. 设置鼠标悬浮提示 3. 设置自动导包功能 Add unambiguous im ...
- 【springcloud】Zuul高级配置(zuul--3)
转自:https://blog.csdn.net/pengjunlee/article/details/87285673 为路由提供HystrixFallback 当Zuul中某一个路由的断路器被断开 ...
- ProjectEuler 008题
题目: The four adjacent digits in the 1000-digit number that have the greatest product are 9 9 8 9 = 5 ...
- forEachRemaining
ArrayList<Integer> arrayList=new ArrayList<>(); for (int i = 0; i <10; i++) { arrayLi ...
- 解决 conda tensorflow failed to create cublas handle: CUBLAS_STATUS_NOT_INITIALIZED
参考解决方案1:https://stackoverflow.com/questions/38303974/tensorflow-running-error-with-cublas 参考解决方案2:ht ...