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用法及区别相关推荐

  1. mysql两个空值相同吗_你知道mysql中空值和null值的区别吗

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  2. MySQL中sum和count用法总结

    MySQL中sum和count用法总结 1.sum 2.count 例子:要求:查询出2门及2门以上不及格者的平均成绩. 3.MySQL 分组之后如何统计记录条数 gourp by 之后的 count ...

  3. MySQL中ESCAPE关键字的用法详解

    MySQL中ESCAPE关键字的用法详解 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 2. escape验证 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 ...

  4. mysql 中set函数的用法

    mysql 中set函数的用法 :当值为空时不进行赋值 update user_user <set><if test="nickname!=null and nicknam ...

  5. mysql中from unixtime,mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别

    摘要 腾兴网为您分享:mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别,作业大师,智慧大学,优化大师,先游等软件知识,以及流星蝴蝶剑,升学指导网软件,承德大宗,q ...

  6. mysql where 与having_正确理解MySQL中的where和having的区别

    以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...

  7. mysql having in_正确理解MySQL中的where和having的区别

    以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...

  8. MySQL中B-tree索引和Hash索引区别

    在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法: CREATE TABLE t(aid int unsigned not null auto_increment,use ...

  9. MYSQL中replace into的用法

    今天在编程的时候,学习了replace into的用法,真的很好用,是insert into的增强版.在向表中插入数据时,我们经常会遇到这样的情况:1.首先判断数据是否存在:2.如果不存在,则插入:3 ...

最新文章

  1. Skia的SkCamera.cpp的doUpdate() 算法。
  2. 计算机考研择校分析,上海地区计算机考研择校分析
  3. 2019最新python面试题详解(应届生)
  4. 腾讯云blog:孪生网络入门(上) Siamese Net及其损失函数
  5. air英语怎么读_如何用英语发音“Macbook Air”
  6. CCCC-GPLT L1-036. A乘以B 团体程序设计天梯赛
  7. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
  8. j2me 移植 android,J2me移植Android初步探索
  9. 服务器怎么支持smtp,如何搭建邮箱服务器,自建smtp服务器
  10. 全面了解小微信贷风控
  11. 右键添加cmd命令快捷键,右键cmd快捷键丢失
  12. typescript总结
  13. TOC制约理论的本质及其在生产、项…
  14. 蓝桥杯基础练习python
  15. C语言串的基本操作(assign,compare,concat,index,insert,delete,replace)
  16. 登录网络共享进入别人计算机,局域网怎么共享别人电脑的网络
  17. JDK9-G1 -XX:ParallelGCThreads 默认选择源码解析
  18. 《观止-微软创建NT和未来的夺命狂奔》 语录摘抄
  19. 机器学习 基础理论 学习笔记 (6)异常值检测和处理
  20. 万年历SQL Server中实现

热门文章

  1. Intel(中国)云基础设施软件研发总监王庆:Intel在云原生里的技术发展和展望
  2. 匆匆忙忙赶出的Arcgis Android api demo,拿出来献丑啦
  3. oracle权限分几种类型,Oracle权限和数据类型
  4. 常见的网络安全面试题目(个人总结)
  5. serverless在微店node领域的探索应用
  6. mongo篇---windows删除mongo日志
  7. cmd中如何回退到上一级文件目录
  8. 加密公司集体裁员 以应对加密寒冬和通货膨胀?现加密总市值低于1万亿美元
  9. wow还在到处找GM工具,GM工具大集合大放送了(45款打包)
  10. 【IoT毕设】机智云物联网平台+arduinoNano控制板+全自动高效智能种树小车