在网站开发中通常使用mysql做数据库,
对mysql数据进行查询是最频繁的操作,
有时需要从查询结果中筛选出符合某条件的数据出来,
就可以考虑用上having了。
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
语法:
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
同样使用本文中的学生表格,如果想查询平均分高于80分的学生记录可以这样写:
SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore
FROM student
GROUP BY id
HAVING AVG(score)>=80;
在这里,如果用WHERE代替HAVING就会出错
例如,群友恶猫需要筛选出查询结果中classCount大于0的记录,写成这样:
SELECT class, count(id) as classCount FROM `yellow_car` where gstat=0 group by class having classCount>1000;