Mysql 基础(十) 为聚合结果指定条件

为聚合结果指定条件

学习重点

  • 使用 COUNT 函数等对表中数据进行汇总操作的时候,为其指定条件的不是 WHERE 子句,而是 Having 子句

  • 聚合函数可以在 SELECT 子句,HAVING 子句和 ORDER BY 子句中使用

  • HAVING 子句要写在 GROUP BY 子句之后

  • WHERE 子句 用来指定数据行的条件 HAVING 子句用来指定分组的条件

Having 子句

  • Having 子句是用来和 Group BY 子句一起配套使用,它是用来帮助 GROUP BY 在分组的

Having 子句必须要写在 GroupBy 子句的后面

基本语法


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

使用 Having 子句的时候 SELECT 顺序是这样的


SELECT-> FROM -> WHERE-> GROUP BY -> HAVING

举例


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

结果

Having 是对 GROUP BY 的 第二次筛选,筛选出符合条件的

HAVING 子句的构成要素

Having 子句能够使用的三种要素如下:

  • 常数

  • 聚合函数

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

比如下面的就是错误的示范


SELECT product_type,COUNT(*) FROM Product GROUP BY product_type HAVING product_name = '打孔器'

因为 product_type COUNT(*)根本没有 product_name 这个列 所以这样查询根本出不来,会直接报错


文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录