在用到having子句的地方,出现最多的往往是sql的聚合函数,例如SUM, COUNT, MAX, AVG等。

这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

示例:

SELECT SUM(population) FROM bbc

返回总人口数。

通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。

当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值。

也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。

HAVING子句可以让我们筛选成组后的各组数据。

WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前。

而 HAVING子句在聚合后对组记录进行筛选。

举二个例子,帮助大家熟悉having的用法。

一、显示每个地区的总人口数和总面积.

SELECT region, SUM(population), SUM(area)

FROM bbc

GROUP BY region

先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中

的不同字段(一或多条记录)作运算。

二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

SELECT region, SUM(population), SUM(area)

FROM bbc

GROUP BY region

HAVING SUM(area)>1000000

此处不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。

HAVING子句可以筛选成组后的各组数据。

mysql having子句_mysql having子句学习相关推荐

  1. mysql where关键字_MySQL WHERE 子句

    我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据. 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中. 语法 以下是 SQL SELECT 语句使用 ...

  2. mysql in子句_MySQL IN子句

    可以使用IN子句来取代许多OR条件 要了解IN子句,考虑下面的 employee_tbl 表,它有以下记录: mysql> SELECT * FROM employee_tbl; +------ ...

  3. mysql 有哪些子句_mysql 查询子句

    样板 create database sky; use sky; create table m1( id int(11), name char(20), age tinyint(10), sex en ...

  4. mysql mdl 锁_MySQL源码学习:MDL字典锁

    什么是MDL MDL,Meta Data lock,元数据锁,一般称为字典锁.字典锁与数据锁相对应.字典锁是为了保护数据对象被改变,一般是一些DDL会对字典对象改变,如两个TX,TX1先查询表,然后T ...

  5. MySQL mdl导入_MySQL源码学习——MDL字典锁

    什么是MDL MDL,Meta Data lock,元数据锁,一般称为字典锁.字典锁与数据锁相对应.字典锁是为了保护数据对象被改变,一般是一些DDL会对字典对象改变,如两个TX,TX1先查询表,然后T ...

  6. mysql 苏勇_MySQL数据库基础学习笔记(整理自苏勇老师的MySQL基础课程视频)

    一.mysql安装及基本配置 1.安装 Mysql官网:www.mysql.com 开源版本(MySQL Community Server) --安装系统自带版本(如果需要更高版本可到官网下载) # ...

  7. mysql as用法_MySQL基础学习总结

    数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验.本着以输出为手段检验学习效果,以温故 ...

  8. mysql having and or_MySQL HAVING子句

    在本教程中,我们将学习如何使用MySQL HAVING子句来指定行分组或聚合的过滤条件. MySQL HAVING子句 MySQL的HAVING子句在SELECT语句中是用来为某一组行或聚合指定过滤条 ...

  9. mysql select having_MySQL中SELECT子句WHERE和HAVING的区别

    MySQL中SELECT子句WHERE和HAVING的区别 WHERE子句: 在分组之前使用,表示从所有数据中根据条件筛选出部分数据,以完成分组的要求. 在一个WHERE子句中使用列别名是不允许的,因 ...

最新文章

  1. 老电脑安装matlab 2018卡不卡,软件装C盘会变卡?Windows系统要怎么用才不卡?
  2. 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
  3. win7系统, vim的_vimrc文件无法修改
  4. 关于Matconvnet中Conv-ReLU-Pool-NormBatch的总结与思考
  5. 取得Servlet文件的絕對路徑;文件讀寫操作
  6. 前端学习(1169):实例数组find
  7. 剑指offer面试题41. 数据流中的中位数(二分查找)
  8. opencv python 鼠标响应操作
  9. 2023年最新zabbix监控Linux服务+ensp交换机
  10. 计算机颜色偏蓝,电脑整个屏幕颜色不正常偏蓝怎么调回正常颜色?
  11. 栈和队列的区别与栈和堆的区别
  12. 什么是架构即代码( Infrastructure As Code)
  13. FPGA-Vivado
  14. 安卓逆向学习资料推荐
  15. 空间直角坐标系(XYZ)转经纬度(BLH)
  16. FDC2214+STM32F103
  17. [转] 一篇好文 ---steve jobs (stay hungry, stay foolish)
  18. Java中比较数字的大小
  19. Python爬虫——动漫zj(manhua站)
  20. 什么是服务器服务器是什么?

热门文章

  1. 银江科技企业课堂小结
  2. 美国大学录取时如何考察学生的背景
  3. MFC程序框架的剖析
  4. 关于BCH交易规范排序(CTOR)的优缺
  5. 企业应用平台移动化发展趋势
  6. Effective C++ -- 构造析构赋值运算
  7. curl 命令行下载工具使用方法小结
  8. Struts2获取request三种方法
  9. zabbix客户端安装二
  10. 打造自动、智能的Office 2003安装光盘