SQL中的Having与Where的区别(面试常问)
一、Having与where的区别
1、分组前后过滤
Having 是分组后对数据进行过滤
Where 是在分组前对数据进行过滤
2、是否能使用聚合函数
Having后面可以使用聚合函数
Where后面不可用使用聚合函数
SELECT [ALL|DISTINCT] <目标表达式>....FROM <表名或者视图名>..[WHERE <条件表达式>][GROUP BY <列名 1> [HAVING] <条件表达式>][ORDER BY <列名 2> [ASC|DESC]]
在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。
为什么不能使用聚合函数呢?
例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
因为where在分组函数之前执行,where后面跟的条件表达式一定要是表中字段,聚合函数是表中没有的字段,所以不行。
比如数据:
这样写完全没有问题。
SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex WHERE Sage > 10;
但是下面这样下就不行了
SELECT Ssex,COUNT(Ssex) FROM `student` WHERE SUM(Sage) > 10 GROUP BY Ssex ;
为什么不行呢? 因为表中是没有SUM(Sage)该字段的。
Having的话,就可以跟聚合函数,因为是过滤已经分好组的表。这样写完全没问题
SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex HAVING SUM(Sage) > 10 ;
HAVING结合聚合函数表示:年龄和大于10的分组。 是筛选的分组出来,而不是每个分组中大于10的
JAVA高频面试题:
https://blog.csdn.net/qq_40262372/article/details/112556249
SQL中的Having与Where的区别(面试常问)相关推荐
- JAVA中堆和栈的区别[面试常问点一]
概念 堆内存:在java虚拟jvm中堆内存主要是存储数组和对象(当然数组也是对象),只要是通过new关键字创建的对象都是在堆中,而堆中存放的就是对象的实体,实体用来封装数据的,封装对象的属性,所以堆内 ...
- select,poll,epoll区别面试常问
select,poll,epoll区别: select优点 1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而pol ...
- SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总)
SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总) 2008年10月14日 星期二 23:57 一.SQL中char varchar nchar nvar ...
- SQL中的or与in的区别
SQL中的or与in的区别 or与in一样的案例(条件里只有a时) a in (1,2,3) a = 1 or a = 2 or a = 3 or与in不一样的案例(条件里不止a时) where a ...
- GET 和 POST 的区别(重要,面试常问)
GET 和 POST 的区别(重要,面试常问) 1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求. (get:不会再次发送请求:post:浏览器会继续向URI发送请求) 2.GET 产 ...
- java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)
java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理 基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...
- SQL中的cast 和convert的区别,日期操作
SQL Server 日期格式和日期操作 SQL Server发展至今, 1.关于日期的格式的控制方法, 有传统的方法,比如CONVERT(), 也有比较便利的新方法,比如FORMAT(): eg: ...
- mybatis sql标签_【1039期】Mybatis面试18问,你想知道的都在这里了!
1.#{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdb ...
- MySQL面试常问问题(SQL 优化 ) —— 赶快收藏
目录 1.慢SQL如何定位呢? 2.有哪些方式优化慢SQL? 避免不必要的列 分页优化 索引优化 JOIN优化 排序优化 UNION优化 3.怎么看执行计划(explain),如何理解其中各个字段的含 ...
- sql中union 和 union all的区别
最近发现一个视图出奇的慢,在生产环境还好,由于服务器配置较高,没有察觉出来.但是做了一次修改后在开发版 和测试版就直接查询不出结果了.就连select count(1) from 都运行2个小时没有结 ...
最新文章
- BUUCTF(misc) 假如给我三天光明 (盲文+摩斯密码)
- linux tcp 内核模块,C – Linux – 内核模块 – TCP头
- HTML5 API详解(6):getUserMedia实现拍照功能
- [原] 内心深处唱的这首歌
- Kafka应用实践与生态集成
- 若后台的Activity被系统回收...
- php session 加密,php session cookie加密实例
- Linux+bridge做透明网桥
- Shave Beaver! CodeForces - 331B2 (线段树)
- React Native开发环境配置检测
- 滴滴单通道语音分离与目标说话人提取和抑制技术进展
- 从虚拟光驱启动计算机,让你的ISO文件成为光盘运行起来虚拟光驱Daemon Tools教程 -电脑资料...
- 如何区分单色LCD液晶屏的显示模式和玻璃型号
- AJAX获取数据然后显示在页面
- Redis Guava 布隆过滤器实现和准确率测试
- unity语音聊天--亲加通讯云(Android/iOS)---ios
- 手动制作linux live,使用Etcher轻松制作Linux Live Disks | MOS86
- 计算机激光鼠标,光电鼠标和激光鼠标的区别
- 路由控制配置ip ip-prefix命令解析
- Linux系统根目录各文件夹的含义
热门文章
- vs.net已经检测到制定的WEB服务器运行的不是ASP.NET1.1版,你无法运行ASP.NET WEB应用程序或服务...
- python在同一行输入n个数转义符_python:转义符\
- 如何在打开谷歌的时候强制跳转google.com
- 笔记本电脑怎么清理灰尘_笔记本电脑卡顿,运行慢,似中病毒,看这里 小白教你轻松搞定...
- backlog配置_Nginx backlog配置概述
- c语言程序设计黄保和第二章,c语言程序设计答案(选择题+编程)黄保和、江戈版...
- 【HDU6286】2018(容斥)
- OpenCV : 图像数字化
- C/C++[入门最后两题]
- OpenCV从源码安装到Ubuntu16.04