ON、WHERE、HAVING的差别

ON、WHERE、HAVING的差别

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

           ON 、WHEREHAVING都能通过限制条件筛选数据,但他们的使用及其不同。以下我们来分析三者之间的差别。

1.       ON 和WHERE

        全部的查询都回产生一个中间暂时报表,查询结果就是从返回暂时报表中得到。ONWHERE后面所跟限制条件的差别,主要与限制条件起作用的时机有关,ON依据限制条件对数据库记录进行过滤,然后生产暂时表;而WHERE是在暂时表生产之后,依据限制条件从暂时表中筛选结果。

           由于以上原因,ONWHERE的差别主要有下:

1)  返回结果:在左外(右外)连接中,ON会返回左表(右表)中的全部记录;而WHERE中,此时相当于inner join,仅仅会返回满足条件的记录(由于是从暂时表中筛选,会过滤掉不满足条件的)。

2)  速度:由于ON限制条件发生时间较早,暂时表的数据集要小,因此ON的性能要优于WHERE

2.       HAVING和WHERE

          HAVINGWHERE的差别也是与限制条件起作用时机有关,HAVING是在聚集函数计算结果出来之后筛选结果,查询结果仅仅返回符合条件的分组,HAVING不能单独出现,仅仅能出如今GROUP BY子句中。;而WHERE是在计算之前筛选结果,假设聚集函数使用WHERE,那么聚集函数仅仅计算满足WHERE子句限制条件的数据,比如:

     SELECT COUNT(id) FROM db_equip WHERE tb_equip_type = ‘2’;

           Count计算的结果是首先筛选设备类型为2的的设备,然后统计设备类型为2类型的数量。

       在使用和功能上,HAVINGWHERE有下面差别:

1)  HAVING不能单独出现,仅仅能出如今GROUP BY子句之中;WHERE即能够和SELECT等其它子句搭配使用,也能够和GROUP BY子句搭配使用,WHERE的优先级要高于聚合函数高于HAVING

2)  由于WHERE在聚集函数之前筛选数据,HAVING在计算之后筛选分组,因此WHERE的查询速度要比HAVING的查询速度快。

3.       总结

        ON、WHERE、HAVING的主要区别是其子句中限制条件起作用时机引起的,ON是在生产暂时表之前依据条件筛选记录,WHERE是从生产的暂时表中筛选数据,而HAVING是对暂时表中满足条件的数据,进行计算分组之后,通过HAVING限制语句筛选分组,返回结果是满足HAVING子句限制的分组。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118060.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java图书销售系统_基于Java Web的图书销售管理系统

    java图书销售系统_基于Java Web的图书销售管理系统项目描述本系统是基于jsp的网上图书销售,有比较符合初学者的简单而又不单一的界面,也有繁琐而又不过于抽象的后台数据处理。包含分类的登录用户(用户与管理员权限与界面不一),功能,登录与未登录有相应的权限设置,正常用户的图书检索与添加购物车、购买等操作。管理员可管理后台的各种信息。数据库中包含触发器用于图表的更新。作为平时与数据库、javaweb等相关的课程设计、大作业,特别适合初学者学习。奉上(包…

  • 贺州gdp排名末尾_xvesselgop

    贺州gdp排名末尾_xvesselgopGOP(GraphicOutputProtocol),是用来将图形驱动程序延伸至UEFI固件的接口,借以取代传统VBIOS(视讯BIOS)在开机资源要求等初始化行为。GOP与视讯BIOS

  • 安装harbor时候报错

    安装harbor时候报错

  • 经典分页样式

    经典分页样式$pagenum=@ceil($count/$perpage1);if($page!=0){$page_jian=$page-1;$page_home.="<ahref=&#39

  • java lang illegalargument_java true false

    java lang illegalargument_java true false我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的。HttpSessionsession=request.getSession(true);//获取session//Stringpath=request.getRealPath(“/data/userfile/p_w_picpath”)…

  • quartus II 过期怎么办?

    quartus II 过期怎么办?转自:http://computersren.com/blogs/blogsDetails.aspx?id=20140303205736&id2=new博客内容: quartusII过期怎么办?把电脑的日期改到过期之前的日期就可以啦。因为单位的电脑上装有瑞星杀毒软件,激活成功教程的工具不能用,所以从网上找到这个答案,在网上试一试,还真行,把日期调过了,quartusII就可以用

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号