where on having 的区别

where on having都是查询条件,可以筛选出符合条件的数据,三者的主要区别是限制条件起作用的时机不同。

执行顺序: ON------>WHERE------>HAVING

where和having

①where的筛选单位是数据行,符合条件的数据行才会被筛选出来,where子句在GROUP BY分组和聚合函数之前对数据行进行过滤;所以where中不可以使用聚合函数。where起作用的时机在having之前。

②having不能单独使用,只能出现在GROUP BY子句之后,having子句对GROUP BY分组和聚合函数之后的数据行进行过滤。所以having中可以使用聚合函数来筛选分组。

③having中可以出现的条件:聚合函数以及分组后能得到的数据的列名(即只能使用分组字段或者聚合函数。)

从性能的角度来说,HAVING子句中如果使用了分组字段作为过滤条件,应该替换成WHERE子句;因为WHERE可以在执行分组操作和计算聚合函数之前过滤掉不需要的数据,性能会更好。having的条件通常为聚合函数。

总结就是:where用于分组和聚合函数之前对数据进行过滤,having用于聚集函数计算结果出来之后筛选结果,符合条件的分组才会被返回。

on 和where

①on是用来限制表和表之间连接的条件。

②在左外连接中,ON会返回左表中的所有记录;在右外连接中,ON会返回右表中的所有记录。如果是内连接,where和on的作用一样

③不符合on条件的数据行不会出现在临时表中(过滤数据),where根据on条件后得到的结果筛选出符合where条件的数据行。

总的来说,ON根据限制条件对数据行记录进行过滤,然后产生临时表;而WHERE是在临时表生产之后,根据限制条件从临时表中筛选结果。

因为ON限制条件发生时间较早,临时表的数据集要小,因此ON的性能要优于WHERE。

数据库语句where、on、having的区别相关推荐

  1. mysql id in set_mysql数据库中find_in_set()和in()用法区别

    mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...

  2. oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别

    oracle数据库物理备份和逻辑备份区别 ORACLE中数据备份分为物理备份和逻辑备份两种.物理备份就是转储ORACLE物理文件(如数据文件.控制文件.归档日志文件等),一旦数据库发生故障,可以利用这 ...

  3. 电子表格和oracle,##请问数据库和电子表格之间有什么区别

    简述电子表格与数据库在技术思想和方法上的区别 Excel:处理的工具.对于数据格式没有强的要求,安全级别很低,运算灵活,本操作. 数据库:SQL Server/Oracle等.数据格式有非常严格的要求 ...

  4. MySQL数据库——语句

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.MySQL数据库语句 (一).按关键字排序 1.可进行多字段的排序 (二).单字段排序 1.按分数排序,默认不指定 ...

  5. 金仓数据库KingbaseES数据库中存储过程和函数的区别

    关键字:存储过程 函数 KingbaseES数据库中存储过程和函数的区别如下表所示: 存储过程 函数 1 用于在数据库中完成特定的操作或者任务(如插入.删除等)  用于特定的数据(如选择) 2 程序头 ...

  6. oracle中call用法,Oracle数据库中 call 和 exec的区别

    Oracle数据库中 call 和 exec的区别 今天发现了一个小东西,觉得很有意思,查找了一些资料,跟大家分享一下: 在sqlplus中: 在第三方提供的工具(如:plsqldev) 总结: ex ...

  7. mysql 计算列的和_MySQL数据库语句,如何计算某一列的和?

    MySQL数据库语句,计算某一列的和用select sum(b) from a就可以了. 下面来补充一些MySql的基本操作命令. 注: <>表示参数.[]表示可选项 连接数据库:mysq ...

  8. mysql5.7语句建库_MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全

    如何下载: 我先去MySQL首页下载最新版本的MySQL-链接:https://www.mysql.com/downloads/ 进入此界面下载: Downloads–>MySQL Commun ...

  9. SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别

    原文:SQL点滴31-SQL语句中@@IDENTITY和@@ROWCOUNT区别 SQL语句中@@IDENTITY和@@ROWCOUNT区别 在一条 INSERT.SELECT INTO 或大容量复制 ...

  10. Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net...

    Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net 1. -catalog与schema的设计区别1 ...

最新文章

  1. base64开源库介绍及使用
  2. Lync server 2013 之office web apps server 搭建步骤
  3. Oracle的下载安装教程以及所出现的问题
  4. python1~10阶乘while_Python3基础 while 阶乘
  5. 43个PSD to XHTML,CSS教程
  6. 利用UrlRewrite,asp.net动态生成htm页面(补充说明)
  7. Scheme调试手册(四)
  8. [R时间序列]ARMA模型如何分辨拖尾与截尾
  9. ttl接地是高电平还是低电平_TTL 门电路输入端分别接大电阻接地,小电阻接地,或空接,输入的是什么电平???跟是什么类型的门电路......
  10. java实现对称加密—数据库密码加解密
  11. 深入浅出通信原理知识点10
  12. 论分布式存储系统架构设计
  13. 计算机技术 安防 工程师考试,2020年上半年信息安全工程师考试报考指南
  14. java中怎么画弧线加粗,CAD中怎么把一段线、曲线或圆弧加粗
  15. 【Go】Go 语言运算符及其优先级
  16. antony.net
  17. 一份完整的app产品运营推广方案,app推广运营的方法(二
  18. word脚注:文字与分隔符间的空格删除
  19. adblock plus 广告过滤器的使用
  20. 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...

热门文章

  1. topaz sharpen ai怎么设置为中文
  2. 利用J2ME制作的手机游戏----贪吃蛇
  3. java计算机毕业设计汽车出租平台源代码+数据库+系统+lw文档
  4. Elasticsearch概述
  5. Ubuntu 18.04 修改 ulimit
  6. 数创新生态 智启新未来,2023鼎桥全球生态大会圆满举办
  7. 计算工资及所得税java_根据最新税法的相关规定,个人所得税工资、薪金的计算适用( )...
  8. Stata: 交叉验证简介
  9. 一个有惊无险的医疗卡项目
  10. uml中的各种符号表示什么意义与关系