Mysql中where和having用法及区别
1、Mysql中Having和Where用法
当SQL语句中使用聚合函数,然后又需要对聚合函数的记录集进行筛选过滤时,这个时候就需要用到Having子句。如果是在聚合函数前过滤记录用Where,在聚合函数后对组记录数据进行筛选就需要用Group by和Having组合。其实也可以换个角度理解也就是where是对真实表的数据进行过滤,而having是依赖于聚合函数生成的二维表数据进行过滤。
总结:where作用于表数据过滤,Having作用于组数据的过滤;where在分组和聚合之前选取数据,having在分组和聚合之后选取分组数据。
2、where、聚合函数、having在from后面的执行顺序:
where > 聚合函数 > having
若需要对聚合函数对group by的结果进行过滤,只能使用having。Having语句通常与Group by语句联合使用,用来过滤Group by语句返回的结果集,Having语句的存在弥补了Where关键字不能与聚合函数联合使用的不足。
例如:查询平均成绩大于60分的同学的学号和平均成绩
select s_id, AVG(s_score) s_avg from Score group by s_id Having AVG(s_score) > 60;
也可以写成如下形式:
select s_id, AVG(s_score) s_avg from Score group by s_id Having s_avg > 60;
如果将Having改成where 就会报错,因为where的执行顺序大于聚合函数。
3、使用where和from注意事项
(1)where后不能跟聚合函数,因为where执行顺序大于聚合函数。
(2)where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即“在分组之前进行过滤数据”,条件中不能包含聚合函数,使用where条件显示特定的行。
(3)having子句的作用是筛选满足条件的组,即“在分组之后过滤数据”,条件中经常包含聚合函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
Mysql中where和having用法及区别相关推荐
- mysql两个空值相同吗_你知道mysql中空值和null值的区别吗
前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...
- MySQL中sum和count用法总结
MySQL中sum和count用法总结 1.sum 2.count 例子:要求:查询出2门及2门以上不及格者的平均成绩. 3.MySQL 分组之后如何统计记录条数 gourp by 之后的 count ...
- MySQL中ESCAPE关键字的用法详解
MySQL中ESCAPE关键字的用法详解 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 2. escape验证 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 ...
- mysql 中set函数的用法
mysql 中set函数的用法 :当值为空时不进行赋值 update user_user <set><if test="nickname!=null and nicknam ...
- mysql中from unixtime,mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别
摘要 腾兴网为您分享:mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别,作业大师,智慧大学,优化大师,先游等软件知识,以及流星蝴蝶剑,升学指导网软件,承德大宗,q ...
- mysql where 与having_正确理解MySQL中的where和having的区别
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...
- mysql having in_正确理解MySQL中的where和having的区别
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...
- MySQL中B-tree索引和Hash索引区别
在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法: CREATE TABLE t(aid int unsigned not null auto_increment,use ...
- MYSQL中replace into的用法
今天在编程的时候,学习了replace into的用法,真的很好用,是insert into的增强版.在向表中插入数据时,我们经常会遇到这样的情况:1.首先判断数据是否存在:2.如果不存在,则插入:3 ...
最新文章
- Skia的SkCamera.cpp的doUpdate() 算法。
- 计算机考研择校分析,上海地区计算机考研择校分析
- 2019最新python面试题详解(应届生)
- 腾讯云blog:孪生网络入门(上) Siamese Net及其损失函数
- air英语怎么读_如何用英语发音“Macbook Air”
- CCCC-GPLT L1-036. A乘以B 团体程序设计天梯赛
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
- j2me 移植 android,J2me移植Android初步探索
- 服务器怎么支持smtp,如何搭建邮箱服务器,自建smtp服务器
- 全面了解小微信贷风控
- 右键添加cmd命令快捷键,右键cmd快捷键丢失
- typescript总结
- TOC制约理论的本质及其在生产、项…
- 蓝桥杯基础练习python
- C语言串的基本操作(assign,compare,concat,index,insert,delete,replace)
- 登录网络共享进入别人计算机,局域网怎么共享别人电脑的网络
- JDK9-G1 -XX:ParallelGCThreads 默认选择源码解析
- 《观止-微软创建NT和未来的夺命狂奔》 语录摘抄
- 机器学习 基础理论 学习笔记 (6)异常值检测和处理
- 万年历SQL Server中实现
热门文章
- Intel(中国)云基础设施软件研发总监王庆:Intel在云原生里的技术发展和展望
- 匆匆忙忙赶出的Arcgis Android api demo,拿出来献丑啦
- oracle权限分几种类型,Oracle权限和数据类型
- 常见的网络安全面试题目(个人总结)
- serverless在微店node领域的探索应用
- mongo篇---windows删除mongo日志
- cmd中如何回退到上一级文件目录
- 加密公司集体裁员 以应对加密寒冬和通货膨胀?现加密总市值低于1万亿美元
- wow还在到处找GM工具,GM工具大集合大放送了(45款打包)
- 【IoT毕设】机智云物联网平台+arduinoNano控制板+全自动高效智能种树小车