
# HAVING
#### 功能描述
在HAVING子句中嵌套子查询，子查询结果将作为HAVING子句的一部分。
#### 语法格式
```
SELECT [ALL | DISTINCT] attr_expr_list FROM table_reference
  GROUP BY groupby_expression
  HAVING aggregate_func(col_name) operator (sub_query);
```
#### 关键字
- ALL：返回重复的行。为默认选项。其后只能跟\*，否则会出错。
- DISTINCT：从结果集移除重复的行。

- groupby_expression：可以是单字段，多字段，也可以是聚合函数，字符串函数等。
- operator：此操作符包含等式操作符与不等式操作符，及IN，NOT IN操作符。
 
#### 注意事项
- 所要查询的表必须是已经存在的表，否则会出错。
- 此处的sub_query与聚合函数的位置不能左右互换。
 
#### 示例
对表student_info按字段name进行分组，计算每组中记录数，若其记录数等于子查询中表course_info的记录数，返回表student_info中字段name等于表course_info字段name的记录数。
```
SELECT name FROM student_info
  GROUP BY name
  HAVING count(name) = (SELECT count(*) FROM course_info);
```
