更新时间:2022-02-22 GMT+08:00

HAVING子句嵌套子查询

功能描述

在HAVING子句中嵌套子查询,子查询结果将作为HAVING子句的一部分。

语法格式

1
2
3
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的记录数。

1
2
3
SELECT name FROM student_info
  GROUP BY name
  HAVING count(name) = (SELECT count(*) FROM course_info);