一、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的区别(面试常问)相关推荐

  1. JAVA中堆和栈的区别[面试常问点一]

    概念 堆内存:在java虚拟jvm中堆内存主要是存储数组和对象(当然数组也是对象),只要是通过new关键字创建的对象都是在堆中,而堆中存放的就是对象的实体,实体用来封装数据的,封装对象的属性,所以堆内 ...

  2. select,poll,epoll区别面试常问

    select,poll,epoll区别: select优点 1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而pol ...

  3. SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总)

    SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总) 2008年10月14日 星期二 23:57 一.SQL中char varchar nchar nvar ...

  4. 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 ...

  5. GET 和 POST 的区别(重要,面试常问)

    GET 和 POST 的区别(重要,面试常问) 1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求. (get:不会再次发送请求:post:浏览器会继续向URI发送请求) 2.GET 产 ...

  6. java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)

    java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理     基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...

  7. SQL中的cast 和convert的区别,日期操作

    SQL Server 日期格式和日期操作 SQL Server发展至今, 1.关于日期的格式的控制方法, 有传统的方法,比如CONVERT(), 也有比较便利的新方法,比如FORMAT(): eg: ...

  8. mybatis sql标签_【1039期】Mybatis面试18问,你想知道的都在这里了!

    1.#{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdb ...

  9. MySQL面试常问问题(SQL 优化 ) —— 赶快收藏

    目录 1.慢SQL如何定位呢? 2.有哪些方式优化慢SQL? 避免不必要的列 分页优化 索引优化 JOIN优化 排序优化 UNION优化 3.怎么看执行计划(explain),如何理解其中各个字段的含 ...

  10. sql中union 和 union all的区别

    最近发现一个视图出奇的慢,在生产环境还好,由于服务器配置较高,没有察觉出来.但是做了一次修改后在开发版 和测试版就直接查询不出结果了.就连select count(1) from 都运行2个小时没有结 ...

最新文章

  1. BUUCTF(misc) 假如给我三天光明 (盲文+摩斯密码)
  2. linux tcp 内核模块,C – Linux – 内核模块 – TCP头
  3. HTML5 API详解(6):getUserMedia实现拍照功能
  4. [原] 内心深处唱的这首歌
  5. Kafka应用实践与生态集成
  6. 若后台的Activity被系统回收...
  7. php session 加密,php session cookie加密实例
  8. Linux+bridge做透明网桥
  9. Shave Beaver! CodeForces - 331B2 (线段树)
  10. React Native开发环境配置检测
  11. 滴滴单通道语音分离与目标说话人提取和抑制技术进展
  12. 从虚拟光驱启动计算机,让你的ISO文件成为光盘运行起来虚拟光驱Daemon Tools教程 -电脑资料...
  13. 如何区分单色LCD液晶屏的显示模式和玻璃型号
  14. AJAX获取数据然后显示在页面
  15. Redis Guava 布隆过滤器实现和准确率测试
  16. unity语音聊天--亲加通讯云(Android/iOS)---ios
  17. 手动制作linux live,使用Etcher轻松制作Linux Live Disks | MOS86
  18. 计算机激光鼠标,光电鼠标和激光鼠标的区别
  19. 路由控制配置ip ip-prefix命令解析
  20. Linux系统根目录各文件夹的含义

热门文章

  1. vs.net已经检测到制定的WEB服务器运行的不是ASP.NET1.1版,你无法运行ASP.NET WEB应用程序或服务...
  2. python在同一行输入n个数转义符_python:转义符\
  3. 如何在打开谷歌的时候强制跳转google.com
  4. 笔记本电脑怎么清理灰尘_笔记本电脑卡顿,运行慢,似中病毒,看这里 小白教你轻松搞定...
  5. backlog配置_Nginx backlog配置概述
  6. c语言程序设计黄保和第二章,c语言程序设计答案(选择题+编程)黄保和、江戈版...
  7. 【HDU6286】2018(容斥)
  8. OpenCV : 图像数字化
  9. C/C++[入门最后两题]
  10. OpenCV从源码安装到Ubuntu16.04