MySQL数据库——HAVING用法

1. having与where的区别

where:

是作用在查询结果进行分组之前,过滤掉不符合条件的数据。where中不能包含聚合函数。(注意是:where后面子句不能有聚合函数,而在含有where中可以使用聚合函数) 作用在group by和having字句前 是作用于对表与视图

having:

是作用在查询结果分组之后,筛选满足条件的组,过滤掉数据。通常跟聚合函数一起使用。having子句在聚合后对组记录进行筛选。

2. having使用示例

此处输入图片的描述

e.g. 查找平均年龄大于19的省份

SELECT adress,AVG(age) FROM tb_user GROUP BY adress HAVING (AVG(age)>19)

查询结果
此处输入图片的描述

e.g. 查询姓名重复的记录

SELECT id,`name` FROM tb_user WHERE `name` in (SELECT `name` FROM tb_user  GROUP BY `name` HAVING COUNT(*)>1)

查询结果
此处输入图片的描述

注意事项 :

  1. where 后不能跟聚合函数,因为where执行顺序大于聚合函数。
  2. where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
  3. having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
-------------本文结束感谢您的阅读-------------