SQL On & Having & Where区别

结论:On > Where > 聚合函数 > Having

On

用于表关联(left join,right join ...),生成临时表时的过滤条件,On条件生效后生成临时表,但主表记录不会被过滤,没有匹配条件的主表记录的对应列都会显示null而已。

Where

表关联情况下,On条件生效后生成临时表,这时如果有Where条件,会根据该条件过滤临时表的所有记录,此时无论是主表还是join表都会根据条件进行过滤。

Having

因为Having执行时机在最后,所以可以把聚合函数当做条件进行过滤。

使用

  • On条件用于表关联,生效最快,但仍然会返回主表所有记录,其次是Where条件生效,可以筛选出想要的结果数据,如果有统计等聚合函数,Having会在最后生效。
  • 如果非表关联查询,那么On则无法使用,如果涉及到的过滤条件也没有涉及到计算统计后的字段,那么此时Having和Where的作用是一样的,但是Where的效率较高。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容