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

最新文章

  1. Unity(1)控制反转
  2. matlab画置信区间图,matlab绘制带置信区间的双y轴图形 | 学步园
  3. 情怀真的可以吃~致文青
  4. 页面某个模块的文字内容是动态的,可能是几个字,也可能是一句话。然 后,希望文字少的时候居中显示,文字超过一行的时候居左显示。该如何实现?...
  5. CVPR2021 Oral|只用静态图,实时渲染出丝滑3D效果
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线心理测评管理系统
  7. [洛谷P2463][SDOI2008]Sandy的卡片
  8. 机器学习之K-means算法:深入浅出K-Means算法
  9. 零成本学arduino教程——光敏电阻传感器
  10. 用计算机算加班,加班工资计算器
  11. 【论文精读】A view-free image stitching network based on global homography-基于全局单应的无视图图像拼接网络
  12. 用形态学及HSV完成车牌照识别
  13. Arrays.sort(arr, (a, b) -> a - b)是对数组进行排序
  14. bcc语料库下载_语料库汇总
  15. 苹果6换屏多钱_iPhone12系列屏幕维修价格公布 苹果12换屏多少钱
  16. js获取当前日期,并且转化为时间格式“yyyy-MM-dd HH:MM:SS”
  17. 开源电子表格Luckysheet强势推出在线协作
  18. 写给父亲的语音计算器(语音的加载播放C#,四)
  19. 启动AndroidStudio报错Missing essential plugin:org.jetbrains.android Please reinstall Android Studio...
  20. 互联网大咖看了都忍不住点赞的电脑配置指南【电脑小白必备】【十年私藏公开分享】

热门文章

  1. python怎么读数据库_Python如何读写SQLite数据库
  2. python爬取js script中的变量_BeautifulSoup抓取js变量
  3. linux sys伪用户作用,linux用户管理详解
  4. c语言加粗字体怎么弄,excel表格如何批量加粗文字
  5. linux设备驱动程序架构的研究,Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)...
  6. 倒计时 妙味课堂_jQuery实现倒计时(倒计时年月日可自己输入)
  7. mysql解释命令,MySQL中EXPLAIN解释命令
  8. java临时文件下载_Java临时文件
  9. testng_TestNG @工厂注释
  10. python locals_Python locals()