发现自己基础太差了,真的得要找时间学习了。
昨天突然问了自己一个问题,sql语句中having是怎么用的,和where有什么区别,我自己问题自己答不上来。。。
确实,没有很系统的学习过sql,但是我这些我也看过,只不过没有重视,外加工作上用的少,全都忘记啦。。。
网上找寻了一下答案,在此记录一下。
having子句只用在分组查询(group by)条件下,用作分组查询结果的条件过滤,举个例子:
select sum(id) from tb_right group by id having sum(id) > 5;
这里把having换成where么?答案是不行的,会直接报错。
网上查询,是因为where子句在聚合函数sum之前运行,而having则是在聚合函数之后运行,因此不难理解为什么会报错了。
where一般用在group by之前即可,比如:
select sum(id) from tb_right where id > 5 group by id;
当然,后面可以继续跟上having子句。
所以where和having还是有很大差别的。
其实主要是因为自己对having不理解,所以会有此疑问,在此记录一下。