首页 > 数据库 >SQL条件放在on、where、having的区别

SQL条件放在on、where、having的区别

时间:2024-07-23 21:57:00浏览次数:12  
标签:聚合 运算 SQL 过滤 条件 where having 函数

三种条件关键字的执行顺序如下:

on > where > 聚合函数 > having

1.表与表之间join的时候首先通过on条件关联,但是主表的记录不会被on条件过滤掉(如:left join时左表为主表,数据将都保留)

2.on条件关联好后,对于生成的数据,再用where条件过滤时,会存在将主表数据过滤掉的情况

3.where条件过滤完后,如果有聚合函数运算的话,进行聚合函数运算

4.聚合函数运算完毕后,对最终结果再进行having过滤,得到最终表

如何选择?

1.如果我们的过滤条件需要基于聚合函数运算后的结果,那就需要放在聚合函数运算后用having过滤,如:要找到平均分大于60的班级,总分大于300分的学生等

2.如果我们的过滤条件不基于聚合函数运算后的结果,而且不要求保留主表所有的数据,那就用where

3.如果我们的过滤条件不基于聚合函数运算后的结果,但要求保留主表所有的数据,那就用on

另外,对于inner join来说,过滤条件放在where 和 on 效果是一样的 。

(如果我们选择用on,比如on t2表中的某个字段值为1,如果t1与t2左关联后,on条件没有匹配上的话,t2的值就会为null)

标签:聚合,运算,SQL,过滤,条件,where,having,函数
From: https://blog.csdn.net/shibububgx/article/details/140646939

相关文章

  • MySQL---------存储过程
    存储过程●介绍:存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与复用......
  • 05_sparkSQL
    SparkSQL简介为什么需要SparkSQL?Spark的RDD有一定局限性,无法处理结构化数据(比如json格式等等);SparkSQL提供了两种编程的抽象,DataFrame(关心数据结构不关心类型),DataSet(关心面向对象的数据);RDD、DataFrame、DataSetDataFrameDataFrame是一种类似于RDD的分布式......
  • mybatisPlus3.4 自定义sqlSessionFactory sql注入器失效、mybatis-plus批量插入报错In
    文章目录一、报错背景二、解决方法在mybatis-plus项目中集成自定义批量插入方法后报错。以下整理一下报错及解决方法。一、报错背景mybatis-plus是不提供insertList批量插入方法的,本人在自定义批量插入方法后,启动时正常,但是执行到insertList时报错。org.apache.i......
  • 记录下Visual Studio 2022配置mysql
    visualstudio能够连接mysql只需要以下几步即可寻找mysql安装路径,如果你没有选择默认在C盘下ProgramFiles下mysql文件夹里,找到include和lib文件夹,分别复制路径。我们接下来来到visualstudio中,右键项目选择properties再将刚才复制的include跟lib的路径添加到Include......
  • 墨者学院(4个sql靶场攻略)
    1.SQL注入漏洞测试(POST)通过绕过方式进入管理后台。        1.1用burpsuite工具抓包在name=1后面输入unionselect1,2,3---这样就成功的进入到了用户的管理登陆后台         1.2然后得到当前靶场的key值2.SQL手工注入漏洞测试(Db2数据库)解题......
  • MySQL数据库-基础篇
    一、MySQL概述cmd中输入services.msc可进入到系统服务中启动服务netstartmysql80停止服务netstopmysql80客户端连接mysql[-h127.0.0.1][-p3306]-uroot-ppassword[]中内容可省略,默认连接本机3306端口,前提是配置了环境变量,cmd中即可连接数据模型......
  • SQL2019收缩LDF的日志文件
    解决日志文件满造成SQL数据库无法写入文件问题1、打开MicrosoftSQLServerManagementStudio管理工具,右键你要压缩的数据库->任务->收缩->文件2、在“文件类型”选择“日志”,在“收缩操作”选择“在释放未使用的空间前重新组织页”,这里会给出一个允许收缩到的最小M数......
  • Oracle 和 MySQL 介绍及适用场景
    Oracle和MySQL介绍及适用场景Oracle介绍OracleDatabase是甲骨文公司开发的一款关系数据库管理系统。Oracle数据库是目前市场上最流行的数据库之一,广泛应用于大型企业和复杂业务系统中。Oracle提供了全面的数据管理和分析功能,支持事务处理、大规模数据库管理、高并......
  • 【java计算机毕设】在线教学平台MySQL springboot vue HTML maven小组设计项目源代码+
    目录1项目功能2项目介绍3项目地址1项目功能【java计算机毕设】在线教学平台MySQLspringbootvueHTMLmaven小组设计项目源代码+文档寒暑假作业 2项目介绍系统功能:在线教学平台包括管理员、用户、教师三种角色。管理员功能包括个人中心模块用于修改个人信息......
  • sql基础语句学习笔记
    目录DDL(DataDefinitionLanguage)数据库模式定义语言DML(DataManipulationLanguage)数据操纵语言给指定字段添加数据查询数据修改数据删除数据DQL(DataQueryLanguage)数据查询语言基本查询(不带任何条件)条件查询(WHERE)聚合函数(count、max、min、avg、sum)分组查询(group......