on where having总结
1. ON 和WHERE
所有的查询都回产生一个中间临时报表,查询结果就是从返回临时报表中得到。ON和WHERE后面所跟限制条件的区别,主要与限制条件起作用的时机有关,
ON根据限制条件对数据库记录进行过滤,然后生产临时表;而WHERE是在临时表生产之后,根据限制条件从临时表中筛选结果。
因为以上原因,ON和WHERE的区别主要有下:
1) 返回结果:在左外(右外)连接中,ON会返回左表(右表)中的所有记录;而WHERE中,此时相当于inner join,只会返回满足条件的记录(因为是从临时表中筛选,会过滤掉不满足条件的)。
2) 速度:因为ON限制条件发生时间较早,临时表的数据集要小,因此ON的性能要优于WHERE。
2. HAVING和WHERE
HAVING和WHERE的区别也是与限制条件起作用时机有关,HAVING是在聚集函数计算结果出来之后筛选结果,查询结果只返回符合条件的分组,HAVING不能单独出现,
只能出现在GROUP BY子句中。而WHERE是在计算之前筛选结果,如果聚集函数使用WHERE,那么聚集函数只计算满足WHERE子句限制条件的数据,例如:
SELECT COUNT(id) FROM db_equip WHERE tb_equip_type = ‘2’;
Count计算的结果是首先筛选设备类型为2的的设备,然后统计设备类型为2类型的数量。
在使用和功能上,HAVING和WHERE有以下区别:
1) HAVING不能单独出现,只能出现在GROUP BY子句之中;WHERE即可以和SELECT等其他子句搭配使用,也可以和GROUP BY子句搭配使用,WHERE的优先级要高于聚合函数高于HAVING。
2) 因为WHERE在聚集函数之前筛选数据,HAVING在计算之后筛选分组,因此WHERE的查询速度要比HAVING的查询速度快。
3. 总结
ON、WHERE、HAVING的主要差别是其子句中限制条件起作用时机引起的,ON是在生产临时表之前根据条件筛选记录,WHERE是从生产的临时表中筛选数据,而HAVING是对临时表中满足条件的数据,进行计算分组之后,通过
HAVING限制语句筛选分组,返回结果是满足HAVING子句限制的分组
转载于:https://www.cnblogs.com/Ai-Hen-Jiao-zhi/p/OnWhereHving.html
最新文章
- Unity(1)控制反转
- matlab画置信区间图,matlab绘制带置信区间的双y轴图形 | 学步园
- 情怀真的可以吃~致文青
- 页面某个模块的文字内容是动态的,可能是几个字,也可能是一句话。然 后,希望文字少的时候居中显示,文字超过一行的时候居左显示。该如何实现?...
- CVPR2021 Oral|只用静态图,实时渲染出丝滑3D效果
- 基于JAVA+SpringBoot+Mybatis+MYSQL的在线心理测评管理系统
- [洛谷P2463][SDOI2008]Sandy的卡片
- 机器学习之K-means算法:深入浅出K-Means算法
- 零成本学arduino教程——光敏电阻传感器
- 用计算机算加班,加班工资计算器
- 【论文精读】A view-free image stitching network based on global homography-基于全局单应的无视图图像拼接网络
- 用形态学及HSV完成车牌照识别
- Arrays.sort(arr, (a, b) -> a - b)是对数组进行排序
- bcc语料库下载_语料库汇总
- 苹果6换屏多钱_iPhone12系列屏幕维修价格公布 苹果12换屏多少钱
- js获取当前日期,并且转化为时间格式“yyyy-MM-dd HH:MM:SS”
- 开源电子表格Luckysheet强势推出在线协作
- 写给父亲的语音计算器(语音的加载播放C#,四)
- 启动AndroidStudio报错Missing essential plugin:org.jetbrains.android Please reinstall Android Studio...
- 互联网大咖看了都忍不住点赞的电脑配置指南【电脑小白必备】【十年私藏公开分享】
热门文章
- python怎么读数据库_Python如何读写SQLite数据库
- python爬取js script中的变量_BeautifulSoup抓取js变量
- linux sys伪用户作用,linux用户管理详解
- c语言加粗字体怎么弄,excel表格如何批量加粗文字
- linux设备驱动程序架构的研究,Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)...
- 倒计时 妙味课堂_jQuery实现倒计时(倒计时年月日可自己输入)
- mysql解释命令,MySQL中EXPLAIN解释命令
- java临时文件下载_Java临时文件
- testng_TestNG @工厂注释
- python locals_Python locals()