having理解概念

本文主要介绍了SQL中HAVING子句的使用。HAVING子句主要用于对聚合函数的分组结果进行筛选,常与GROUP BY一起使用。同时说明了HAVING与WHERE子句的区别,以及在不同情况下使用HAVING子句的注意事项,如无GROUP BY时不推荐使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说一下having的概念:HAVING子句主要用于对聚合函数的分组结果进行筛选,通常与GROUP BY一起使用。如果没有GROUP BY,通常使用WHERE子句来筛选行而不是使用HAVING子句,但也是可以使用HAVING,只是不推荐。


  • having子句即可包含聚合函数作用的字段也可以包括普通的标量字段

HAVING子句用于筛选分组后的结果集,可以包括聚合函数作用的字段以及普通的标量字段。

  • 使用having的同时可以使用where子句

WHERE子句用于筛选从表中检索的行,而HAVING子句用于筛选分组后的结果。我们可以在同一查询中同时使用WHERE和HAVING,分别对行和分组进行筛选。

  • having子句可以脱离于group by子句使用,效果与where一样,但不推荐没有group by时使用having

这里可能存在一些混淆。HAVING子句通常与GROUP BY子句一起使用,用于对分组后的数据进行过滤。如果没有GROUP BY子句,HAVING子句的效果与WHERE子句类似,但是在没有GROUP BY的情况下使用HAVING通常是不合理的,因为它的主要目的是筛选分组。在没有GROUP BY的情况下,应该使用WHERE来筛选行。

  • 使用having子句的作用是限定分组条件

HAVING子句用于在GROUP BY子句中对分组进行条件筛选,它允许筛选聚合结果,例如,仅选择总和大于某个值的分组。

  • select语句中没有聚合函数时,也可以使用having子句

这个说法确实不正确。在SELECT语句中没有聚合函数的情况下,HAVING子句没有合适的用途,使用它可能导致语法错误或不符合查询的逻辑目标。所以不推荐这样使用,之前只是想表达可以用,但现在看来没有任何意义。


文档最初发布于20年底,现在看来之前确实有很多没有说清楚和错误的地方,所以加了一些解释和修改,希望大家随时评论,我会及时修改。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值