更新时间:2022-12-07 GMT+08:00

HAVING过滤子句

功能描述

利用HAVING子句过滤查询结果。

语法格式

1
2
3
4
SELECT [ALL | DISTINCT] attr_expr_list FROM table_reference
  [WHERE where_condition]
  [GROUP BY col_name_list]
  HAVING having_condition;

关键字

  • ALL:返回重复的行。为默认选项。其后只能跟*,否则会出错。
  • DISTINCT:从结果集移除重复的行。
  • HAVING:一般与GROUP BY合用,先通过GROUP BY进行分组,再在HAVING子句中进行过滤,HAVING子句支持算术运算,聚合函数等。

注意事项

  • 所查询的表必须是已经存在的,否则会出错。
  • 如果过滤条件受GROUP BY的查询结果影响,则不能用WHERE子句进行过滤,而要用HAVING子句进行过滤。

示例

根据字段name对表student进行分组,再按组将score最大值大于95的记录筛选出来。

1
2
3
SELECT name, max(score) FROM student
  GROUP BY name
  HAVING max(score) >95;