having子句与where都是设定条件筛选的语句,有相似之处也有区别。

having与where的区别:
having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合

在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。

所以聚合语句(sum,min,max,avg,count)要比having子句优先执行,而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
where子句:
select sum(num) as rmb from order where id>10
//只有先查询出id大于10的记录才能进行聚合语句

having子句:
select reports, count(*)  from employees group by reports having count(*) > 4
上例having条件表达示为聚合语句,肯定的说having子句查询过程执行优先级别低于聚合语句。
再换句说话说把上面的having换成where则会出错,统计分组数据时用到聚合语句。
对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。

聚合函数:
例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

HAVING子句可以让我们直接筛选成组后的各组数据,也可以在聚合后对组记录进行筛选,而WHERE子句在聚合前先筛选记录,也就是说作用在GROUP BY 子句和HAVING子句前。

Mysql中having和where的区别相关推荐

  1. mysql''和null,mysql中NULL和null的区别

    接触php的web开发一段时间了,在进行数据库操作的时候经常会遇到一个问题,使得同一字段在页面显示时有3种类型NULL,null以及数字,当时的解决办法是将这一字段定义为varchar类型,在插入数据 ...

  2. Mysql中的count()与sum()区别

    Mysql中的count()与sum()区别 首先创建个表说明问题 CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` ...

  3. MySQL中interactive_timeout和wait_timeout的区别

    2019独角兽企业重金招聘Python工程师标准>>> 在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ? 1 2 3 E ...

  4. mysql中的blob和text区别

    mysql中的blob和text区别 经过查询资料发现 除了blob 还有tinyblob longblob mediumblob 当然text还有tinytext mediumtext longte ...

  5. mysql中char与varchar的区别分析

    原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中cha ...

  6. mysql中where和and的区别

    本文来说下mysql中where和and的区别 文章目录 概述 内连接的时候 左外连接的时候 本文小结 概述 多表查询语法结构:table_reference {[INNER] JOIN | {LEF ...

  7. 【038】MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?

    ♣题目部分 MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义? ♣答案部分 (1).varchar与char的区别区别一,定长和变长char 表示定长,长度固定, ...

  8. MySQL中In与Exists的区别

    MySQL中In与Exists的区别 1 例子 2 EXISTS和IN的介绍 2.1 exists 2.2 in 2.3 使用上的区别 3 EXISTS和IN的性能分析 4 总结 1 例子 有两个表需 ...

  9. MySQL中distinct和distinctrow的区别

    引用官方文档的内容MySQL中distinct和distinctrow的区别 原文:The ALL and DISTINCT modifiers specify whether duplicate r ...

  10. mysql中now,curdate,curtime,sysdate区别

    //mysql中now,curdate,curtime,sysdate区别 1.now 返回的时间,格式如下:2013-01-17 10:57:13 mysql> select now(),sl ...

最新文章

  1. Matlab心得及学习方法(不断更新)
  2. Linux 多线程编程
  3. 【机器学习PAI实践五】机器学习眼中的《人民的名义》
  4. sessionStorage localStorage cookie的区别
  5. Nexus协议,闲鱼一体化开发的幕后玩家
  6. linux mysql导出导入表_linux mysql 数据库操作导入导出 数据表导出导入
  7. 虚拟机网络驱动(共享文件夹)不见了的解决方案-适用于win7~win10 and Windows Server 2008~Windows Server 2012R2
  8. xx信息管理系统设计
  9. 《SPSS 统计分析从入门到精通(第2版)》一6.3 二项式检验
  10. Spring注解几大注解的区别
  11. c语言之sizeof与strlen全
  12. 详解pandas编码函数pd.factorize()
  13. 利用sql profile固定执行计划加快OGG同步
  14. Python 类的定制
  15. Oracle索引基础
  16. NAT穿越(NAT-T)原理
  17. PSH还有各种要补的天坑2
  18. 导入maven项目时依赖包报红解决方案
  19. 探索优傲机器人丨UR10e在电子制造业的应用
  20. 经典的就要转载:另类DLL注入法 ,mian杀

热门文章

  1. MonoCon:使用辅助学习的单目3D目标检测框架(AAAI 2022)
  2. PointPillar:利用伪图像高效实现3D目标检测
  3. 工作能力强的人有哪些共同特征?
  4. SpringMVC---web.xml的配置
  5. matlab svm工具箱_机器学习笔记--SVM(MATLAB 实现代码)
  6. RNA-seq分析-数据库
  7. MPB:湖南师大尹佳组-乳酸菌的耐热实验
  8. 最后1周 | 高级转录组分析和R语言数据可视化第十一期 (报名线上课还可免费参加线下课)...
  9. 单细胞转录组专题研讨会第二期
  10. QIIME 2用户文档. 4人体各部位微生物组分析实战Moving Pictures(2018.11)