如何理解mysql中的聚合函数专用的having查询语句?
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔在本文中讲一下mysql的having用法,having语句是用在什么地方的?表示什么意思?这就是本文中要重点讨论的问题。需要强调的是:having语句总是和聚合函数放在一起使用的。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。本having语句的使用方法文章的测试环境是:win10,mysql@5.7.26。
测试数据
这里有个测试表pets,里面记录一些宠物的信息。建表语句如下:
CREATE TABLE `pets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`cid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
INSERT INTO `pets` VALUES (1,'小黑',1),(2,'虎子',2),(3,'二赖子',2),(4,'老白',3),(5,'老许',3),(6,'小白',3);
聚合函数
什么样的函数是聚合函数呢?聚合函数都有哪些?主要有如下常见的聚合函数,比如:
- 求和函数(SUM):将一组数据的值相加得到总和。
- 计数函数(COUNT):统计一组数据中值的个数。
- 平均值函数(AVG):将一组数据的值相加并除以总个数得到平均值。
- 最大值函数(MAX):返回一组数据中的最大值。
- 最小值函数(MIN):返回一组数据中的最小值。
- Group By 分组语句。
查询数据范例:
select cid,count(id) nums,sum(id) nums2,max(id) as max,min(id) as min,avg(id) as avg from pets group by cid
having语句
having语句其实就是作用在聚合函数相关语句上的where条件。例如:
select cid,count(id) nums,sum(id) nums2,max(id) as max,min(id) as min,avg(id) as avg from pets group by cid having nums>=2 and max<=3
having对比using
对比一下苏南大叔以前写过的using语句的话,就可以发现:
using是个函数,使用方式是using("字段")。having是关键字,使用方式是having 字段条件。
相关链接
- https://newsn.net/say/mysql-left-join.html
- https://newsn.net/say/mysql-inner-join.html
- https://newsn.net/say/mysql-using.html
结束语
更多mysql经验文章,可以点击: