MySQL (九)数据库的查询
继续上一篇中的问题
【常用的Select选择语句】
五、【 Select 语句之 having 子句的使用 】
使用HAVING子句的目的与WHERE子句类似,不同的是WHERE子句是用来在FROM子句之后选择行,而HAVING子句用来在GROUP BY子句后选择行。例如,查找XSCJ数据库中平均成绩在85分以上的学生,就是在XS_KC表上按学号分组后筛选出符合平均成绩大于等于85的学生。
语法格式:
HAVING where_definition
其中,where_definition是选择条件,条件的定义和WHERE子句中的条件类似,不过HAVING子句中的条件可以包含聚合函数,而WHERE子句中则不可以。
SQL标准要求HAVING必须引用GROUP BY子句中的列或用于聚合函数中的列。不过,MySQL支持对此工作性质的扩展,并允许HAVING引用SELECT清单中的列和外部子查询中的列。
如: 查找XSCJ数据库中平均成绩在85分以上的学生的学号和平均成绩。
SELECT 学号, AVG(成绩) AS '平均成绩' FROM XS_KC GROUP BY 学号 HAVING AVG(成绩) >=85;
如:查找选修课程超过2门且成绩都在80分以上的学生的学号。
SELECT 学号 FROM XS_KC WHERE 成绩 >= 80 GROUP BY 学号 HAVING COUNT(*) > 2;
如:查找通信工程专业平均成绩在85分以上的学生的学号和平均成绩。
SELECT 学号,AVG(成绩) AS '平均成绩' FROM XS_KC WHERE 学号 IN ( SELECT 学号 FROM XS WHERE 专业名 = '通信工程' ) GROUP BY 学号 HAVING AVG(成绩) >=85;

浙公网安备 33010602011771号