为聚合结果指定条件

HAVING子句

HAVING子句可以让我们筛选分组之后的各种数据,其语法结构如下:

SELECT <列名1>,<列名2>,<列名3>
FROM <表名>
GROUP BY <列名1>,<列名2>,<列名3>
HAVING <分组结果对应的条件>

例:

使用HAVING子句前:

使用HAVING子句后:

例:

HAVING子句的构成要素

HAVING子句中能够使用的3种要素,如下:

  • 常数
  • 聚合函数
  • GROUP BY子句中指定的列名(即聚合键)

例:HAVING子句的错误范例

product_name列并不包含在GROUP BY子句中,因此不允许写在HAVING子句中,可以理解为GROUP BY子句汇总后得到的表中并不存在product_name这一列。

例:正确示范

对查询结果进行排序

ORDER BY子句

ORDER BY子句可以用来指定排列的顺序,其语法结构如下:

SELECT <列名1>,<列名2>,<列名3>
FROM <表名>
ORDER BY <排序基准点1>,<排序基准点2>,<排序基准点3>,...;

ORDER BY子句中书写的列名称为排序键
例:


注意:如果有多个排序键的话,优先按照第一个排序键排序,如果该列存在相同值的话,再接着参考右侧的键,如下图所示:


子句书写顺序:
1.SELECT子句→2.FROM子句→3.WHERE子句→4.GROUP BY子句→5.HAVING子句→6.ORDER BY子句
ORDER BY子句子句通常写在SELECT语句的末尾。

指定升序或降序

想要降序排列时,我们可以在列名后面加上DESC关键字

例:

注:其实使用升序排序时,正式的书写方式应该是使用ASC关键字,但是省略该关键字时会默认使用升序排序。

由于ASC和DESC这两个关键字是以列为单位指定的,因此可以同时指定一个列为升序,指定其他列为降序,例:

NULL的顺序

默认情况下,MySQL将null算作最小值。

例:

在排序键中使用别名

在讲别名的使用之前我们先梳理一下MySQL的子句语法顺序和执行顺序

MySQL中子句的语法顺序:

SELECT[DISTINCT] →FROM→JOIN→ON→WHERE→GROUP BY→HAVING→UNION→ORDER BY→LIMIT

MySQL中子句的执行顺序,即在执行时SQL按照下面的顺序进行执行:

FROM→JOIN→ON→WHERE→GROUP BY(开始使用SELECT中的别名,后面的语句中都可以使用别名)→AVG,SUM,…→HAVING→SELECT→DISTINCT→ORDER BY

由此我们可以在OEDER BY子句中使用别名。

ORDER BY子句中可以使用的列

ORDER BY子句中也可以使用存在于表中、但并不包含在SELECT子句中的列,如下图:

除此以外,还可以使用聚合函数,如下图:

不要使用列编号

列编号是指SELECT子句中的列按照从左到右的顺序进行排列时所对应的编号(1,2,3…)。
例:


以上两个例子的执行结果是一样的,也就是说我们可以使用列编号来执行ORDER BY语句,但是使用列编号可能会造成一些问题。
不要使用列编号理由如下:

  1. 代码阅读起来比较困难;
  2. 该功能将来会被删除(SQL-92中明确指出了该排序功能未来会被删除)。

SQL基础学习总结:5(HAVING子句的使用ORDER BY排序子句的使用)相关推荐

  1. ORDER BY 排序子句 | 零基础自学SQL课程系列Day6

    大家好,我是宁一. 今天是SQL教程的第六课,来看看ORDER BY 排序子句. ORDER BY语句是用来排序的,后面跟的是字段名. 基本语法: SELECT <字段名> FROM &l ...

  2. 【SQL基础学习】----基础篇(1)

    前言: 存储数据的容器 在内存中(数据存在易失性,断电即数据没了):         数组         集合 磁盘(永久存储):         文件(不易管理)         数据库(持久化, ...

  3. SQL基础学习总结:3(select语句基础算术运算符比较运算符)

    select语句基础 列的查询 从表中选取数据时需要使用select语句,通过select语句查询并选取出必要数据的过程称为匹配查询或查询. 语法结构如下: select <列名1>,&l ...

  4. 萌新SQL基础学习1

    萌新学习(捡起)数据库(其实学校学过,忘了...) SQL是什么? SQL,一种用于访问和处理数据库的标准的计算机语言. SQL,指结构化查询语言,全称是Structured Query Langua ...

  5. SQL基础学习总结:6(INSERT语句的相关使用方法)

    数据的插入(INSERT语句的使用方法) 我们之前在表的创建部分简单地介绍了一下INSERT语句的功能和使用方法,现在我们再详细讲一下它的用法. INSERT语句的基本语法 其语法结构如下: INSE ...

  6. SQL基础学习总结:2(表的创建、删除、更新和名称修改)

    表的创建.删除.更新和名称修改 登录MySQL(mysql -u root -p语句) 步骤: 1.首先得先使用mysql -u root -p语句登录数据库: 2.在"Enter pass ...

  7. SQL基础学习总结:1(数据库)

    数据库 我们通常将可以将大量数据保存下来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库,简称:DB. 而用来管理数据库的计算机系统则称之为数据库管理系统,简称:DBMS.一般情况下,系统的 ...

  8. #大学#SQL基础学习笔记(02)

    *数据分组select FAge,count(*) from TableName group by FAge (根据年龄进行分组)一般和聚合函数一起使用 *Having语句select FAge,co ...

  9. SQL基础学习:五、聚集函数

    聚集函数 聚集类函数 聚集类函数(avg.max.min.sum.count.median) 聚集类函数 我们经常需要汇总数据而不用把它们实际检索出来,为此SQL提供了专门的函数. products ...

最新文章

  1. R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar)
  2. Oracle数据库的关闭详解
  3. php socket ubuntu,Ubuntu升级php7.0配置fpm socket
  4. java io 输出流_Java IO 输入和输出流
  5. login.php静态页面的设计,ps+div+css打造蓝色后台--login页面设计
  6. Pixhawk代码分析-源码框架
  7. UltraEdit(UE编辑器)常用快捷键一览
  8. 导入资料的预览与修改
  9. 互斥量+条件变量实现 信号量
  10. java开源问卷调查系统源码_高效实用!开源调研问卷系统 DWSurvey,基于 JAVA WEB 开发...
  11. Jenkins项目配置-Nodejs项目(Vue框架)-全面
  12. 用vmware安装gho文件
  13. 微信小程序商城项目(篇7):商城详情页实现
  14. 硬盘坏了可以修复吗?如何恢复里面的数据?
  15. 苹果开发者公司账号的申请步骤
  16. echars 3D地图为区域自定义颜色
  17. SAP UI5 应用开发教程之一百零二 - SAP UI5 应用的打印(Print)功能实现详解试读版
  18. Windows 8/Server 2012/Office 2013 所有版本下载
  19. oracle before after 触发器,触发器 after before 之间的区别
  20. 1033 旧键盘打字 (20 分)

热门文章

  1. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)
  2. 最全19000+国外AE模板合集包
  3. 24组8K真实路面材质贴图素材 VizPeople – Pavement Textures V1
  4. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)
  5. 洛谷P2587 [ZJOI2008]泡泡堂
  6. 一个6年的菜鸟,在4年之前做的一些功能(二)
  7. 5招全面扫描网站页面的质量
  8. 【C++】bind参数绑定 P354(通用的函数适配器)
  9. 图像特征点检测与匹配评价准则——量化
  10. Android:JNI 与 NDK到底是什么