msSQL中having的用处详解

2023-01-06 14:33:12 作者:admin

本文整理自网络,侵删。

目录
  • 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版
          书籍

          数据库系统概念 第6版

          机械工业出版社

          本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



          在线咨询 拨打电话