ON、WHERE、HAVING的差别

ON、WHERE、HAVING的差别

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

           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://javaforall.net/118060.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • String与StringBuffer的区别

    String与StringBuffer的区别String与StringBuffer的区别简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。String:在String类中没有用来改变已有字

    2022年9月21日
  • iptables中DNAT、SNAT和MASQUERADE[通俗易懂]

    iptables中DNAT、SNAT和MASQUERADE[通俗易懂]DNAT(DestinationNetworkAddressTranslation,目的地址转换)通常被叫做目的映射,SNAT(SourceNetworkAddressTranslation,源地址转换)通常被叫做源映射。这是我们在设置Linux网关或者防火墙时经常要用来的两种方式,要理解iptables中DNAT、SNAT和MASQUERADE,我们要先了解一…

    2022年6月23日
  • VC中获取窗体句柄的各种方法

    VC中获取窗体句柄的各种方法

    2021年12月2日
  • CountDownTimer_bytebuffer slice

    CountDownTimer_bytebuffer slicepublicclassCountDownTimerManager{/***总倒计时*/privatelongmillisInFuture=0;/***回调时间*/privatelongcountDownInterval;/***倒计时完成回调*/privateFinishCountDownfinishCountDown;/**

    2022年9月18日
  • Odin Inspector 系列教程 — Type Filter Attribute

    Odin Inspector 系列教程 — Type Filter AttributeTypeFilterAttribute特性:对输入的value进行自定义过滤,只显示需要的类型完整示例代码usingSirenix.OdinInspector;usingSirenix.Utilities;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usin…

    2022年7月21日
  • 20款知名PHP集成环境推荐与优缺点分析、php环境大全推荐(PHP环境搭建包)

    20款知名PHP集成环境推荐与优缺点分析、php环境大全推荐(PHP环境搭建包)20款知名PHP集成环境推荐与优缺点分析、php环境大全推荐(PHP环境搭建包)、PHP环境搭建、PHP集成环境搭建,最好用的20个php环境搭建工具推荐

    2022年4月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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