Shiliew 植树人

Mysql复习与学习(三)--having

2017-08-31

  having子句一般是和group by组合使用的,在后面接一个聚合函数,对group by的分组结果进行筛选。当然,having也可以单独使用,但不推荐。

having子句

  在select语句中,可以接where、group by、having和order by这四个子句,而这四个子句的书写顺序也是如此排列的。having一般接在group by后面,单独使用的意义不大。

示例

  存在一张记录水果名称、产地以及价格的表fruit,如下:

fruit表内容

  having主要是对group by的分组结果进行筛选,例如,筛选出水果种类不止一种的产地。

SELECT COUNT(name) AS 水果种类, product_place as 产地 from fruit GROUP BY product_place HAVING COUNT(name) > 1;

查询结果1

  having可以单独使用,但不推荐。使用聚合函数,而只有一组查询结果,显然没有太多的意义。having也可以像where那样使用,结果没区别。

SELECT name AS 水果种类, product_place as 产地 from fruit  HAVING product_place != 'America';

查询结果2

  where是用于筛选表或者视图,而having主要用于分组。

总结

  having主要通过聚合函数对分组后记录进行筛选,因此总是跟在group by后面,分组之前通常由where进行筛选。

参考

sql语句中where和having的区别

SQL HAVING用法详解

SQL语句中的Having子句与where子句


Comments

comments powered by HyperComments