MYSQL学习8


参考MICK的SQL基础教程,进行SQL的基础学习。

Product表:
在这里插入图片描述

为聚合结果指定条件

HAVING子句

WHERE子句只能指定记录(行)的条件,而不能用来指定组的条件(例如,“数据行数为 2 行”或者“平均值为 500”等)。
因此,对集合指定条件就需要使用其他的子句了,此时便可以用HAVING 子句。
使用 HAVING 子句时 SELECT 语句的顺序
SELECTFROMWHEREGROUP BYHAVING

并且HAVING 子句中能够使用的 3 种要素如下所示。
● 常数
● 聚合函数
GROUP BY子句中指定的列名(即聚合键)

从按照商品种类进行分组后的结果中,取出“包含的数据行数为2。
行”的组

SELECT
	product_type,
	COUNT(*)
FROM
	product
GROUP BY
	product_type
HAVING
	COUNT(*) = 2;

Out:
在这里插入图片描述
WHERE 子句 = 指定行所对应的条件
HAVING 子句 = 指定组所对应的条件

注:将条件写在 WHERE 子句中要比写在 HAVING 子句中的处理速度更快,返回结果所需的时间更短。

对查询结果进行排序

ORDER BY子句

SELECTFROMWHEREGROUP BYHAVINGORDER BY

降序,在列名后面使用 DESC 关键字

SELECT
	product_id,
	product_name,
	sale_price,
	purchase_price
FROM
	Product
ORDER BY
	sale_price DESC;

指定多个排序键

SELECT
	product_id,
	product_name,
	sale_price,
	purchase_price
FROM
	Product
ORDER BY
	sale_price, product_id;

Out:
在这里插入图片描述
注:排序键中包含NULL时,会在开头或末尾进行汇总。

在排序键中使用显示用的别名

SELECT
	product_id AS ID,
	product_name,
	sale_price AS "价格",
	purchase_price
FROM
	Product
ORDER BY
	ID,
	"价格"

之所以不能在GROUP BY中使用别名, 是因为使用 HAVING 子句时 ,内部的执行顺序为
FROMWHEREGROUP BYHAVINGSELECTORDER BY

不推荐使用列编号,在 SQL-92A 中已经明确指出
该排序功能将来会被删除。

SELECT
	product_id AS ID,
	product_name,
	sale_price AS "价格",
	purchase_price
FROM
	Product
ORDER BY
	3

Out:
在这里插入图片描述
按照 SELECT 子句中第 3 列的升序进行排列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值