msSQL中having的用处详解
本文整理自网络,侵删。
目录
- where过滤数据
- having存在的意义
- having的日常运用
- having查重
- having统计筛选:达到某一指标的集合
- 必须group by后使用
- 具体执行顺序的梳理
- 举一个简单例子理解这里的执行顺序
- 总结
where过滤数据
要说having,首先要说一下where,这个语句非常常用且重要。
在我们查询数据库时,不可能每一次都把所有数据拿出来(上亿的数据量,啥服务器也扛不住啊)
通常都是取出前10条,按时间取前30条,按名称、年龄、金额等数据表中有的字段的值进行筛选;也有可能筛选后数据还是比较多,会进行一个分页处理。
这里where的作用就必不可少了!只要是表中存在的字段值类型,写成布尔值结果的表达式即可,多条件与、或、非运算都可以。
可以说,项目中用到的SQL语句,99.9%都包含Where语句的,实用程度可想而知。
但是它却有无法实现的一些功能,这时,having就要出场了~
having存在的意义
SQL语句中,如果需要计算总数、累加、求均值等聚合运算,并筛选出总数未达到或达到的部分集合
Where语句无法替代的,比如
在Where 中使用 Count时,异常报错如下
图片内容翻译: Where中不能出现聚合运算,只能写到having或者select中
因此,可以这么说,having可以做到where做不到的效果
having的日常运用
通常有having的地方都有聚合运算,
having查重
select CompanyNameFROM Company GROUP BY CompanyName HAVING count(1) > 1
having统计筛选:达到某一指标的集合
例如: 公司里2021年度总收入 < 120000 的员工筛选出来(然后涨工资~)
select * FROMPayrollWHERE DATEPART(Year, CreateTime) = 2021GROUP BY EmployeeIdHAVING SUM(Wages) < 120000
必须group by后使用
通过上面的两个简单例子,可以看出,having都是写在group by后面
阅读剩余部分
相关阅读 >>
sql为什么会出现无效的列索引
sqlserver数据库升级脚本图文步骤
如何捕获和记录sql server中发生的死锁
pandas直接读取sql脚本的方法
sql是层次数据库的标准语言吗?
sql注入攻击的原理
sql是什么意思
mysql常见优化方案汇总
sql语言的select语句
sql cmd是什么意思?
更多相关阅读请进入《sql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678