加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- AI开发硬件、专属主机、建站、CDN、云容器引擎!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

MSSQL中having存在的意义是什么

发布时间:2023-12-30 18:47:37 所属栏目:MsSql教程 来源:DaWei
导读: 这篇文章主要讲解了“MSSQL中having存在的意义是什么,有哪些运用”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获
这篇文章主要讲解了“MSSQL中having存在的意义是什么,有哪些运用”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

where过滤数据

要说having,首先要说一下where,这个语句非常常用且重要。

在我们查询数据库时,不可能每一次都把所有数据拿出来

通常都是取出前10条,按时间取前30条,按名称、年龄、金额等数据表中有的字段的值进行筛选;也有可能筛选后数据还是比较多,会进行一个分页处理。

这里where的作用就必不可少了!只要是表中存在的字段值类型,写成布尔值结果的表达式即可,多条件与、或、非运算都可以。

可以说,项目中用到的SQL语句,99.9%都包含Where语句的,实用程度可想而知。

having存在的意义

SQL语句中,如果需要计算总数、累加、求均值等聚合运算,并筛选出总数未达到或达到的部分集合

Where语句无法替代的,比如

在Where 中使用 Count时,异常报错如下

图片内容翻译: Where中不能出现聚合运算,只能写到having或者select中

having的日常运用

通常有having的地方都有聚合运算,

having查重
SELECT
    CompanyName
FROM Company 
GROUP BY CompanyName 
HAVING count(1) > 1

having统计筛选:达到某一指标的集合

具体执行顺序的梳理

首先肯定是数据来源开始,数据都在数据库中,对数据库中数据进行筛选的是Where,那where肯定第一个执行

要按条件进行分类(即分组),最后才是聚合计算,having过滤的是聚合计算的结果。

换句话说,where查询完数据库,数据已经到了设备的内存当中了,group by 和 having 都是在内存中进行的!相当于数据被筛选了两次,计算了一次,这一次计算夹在两次筛选之间,而计算前还有一次分组的过程。

这里也可以看出来,where和having都是过滤数据,前者是过滤数据库中数据,后者是过滤聚合计算后的数据!

到此这篇关于“MSSQL中having存在的意义是什么,有哪些运用”的文章就介绍到这了,更多相关内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章