博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:mysql where group by having
阅读量:6574 次
发布时间:2019-06-24

本文共 775 字,大约阅读时间需要 2 分钟。

原文地址:

1.where为什么要写在group by之前呢?

    因为group by只能够对结果集进行处理,假如说我们可以先分组后对分组之后的结果集进行在where条件下的筛选的话在查询相当于对有些没有必要分组的数据集也进行了分组了,数据小还好的,如果数据量巨大的话,那么这个多余的操作将会消耗大量的内存,而实际上多余的操作是没有必要的。

 

2.having使用的时机

      where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上,这句话的意思参考下面案例(注 案例根据自己测试情况写的,不一定正确),

正确:

select cno,degree from score group by cno having degree >85;   如果 having 后直接使用字段,则字段必须出现在 select 后面

select cno from score group by cno having avg(degree) >85;       如果 having 后使用聚合函数,则聚合函数中的字段不必出现在 select 后面

错误:

select cno from score group by cno having degree >85;      此例中 having 后使用的  degree 未出现在 select 后面,会报错。

转载于:https://www.cnblogs.com/mumu122GIS/p/9766125.html

你可能感兴趣的文章
UVM中的class--2
查看>>
任务调度器配置文件
查看>>
ORACLE 存储过程异常捕获并抛出
查看>>
HDU 4293 Groups (线性dp)
查看>>
博客园博客美化相关文章目录
查看>>
root用户重置其他密码
查看>>
关于查询扩展版ESI高被引论文的说明
查看>>
【iCore3应用】基于iCore3双核心板的编码器应用实例
查看>>
Oracle推断值为非数字
查看>>
得知发行组长老潘今天岗位上最后一天就要离开有感
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
从JDK源码角度看Short
查看>>
解密Angular WebWorker Renderer (二)
查看>>
parceljs 中文文档24小时诞生记
查看>>
五年 Web 开发者 star 的 github 整理说明
查看>>
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
查看>>
ReactNative字体大小不随系统字体大小变化而变化
查看>>
中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
查看>>
为什么中台是传统企业数字化转型的关键?
查看>>