多表查询语法结构:
table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr

在多表查询时,ON和where都表示筛选条件,on先执行,where后执行。
区别:
外连接时,on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。而where条件是在临时表生成好后,再对临时表进行过滤的条件。
如:

SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.`deptno` AND e.`deptno`=40;

SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.`deptno` WHERE e.`deptno`=40;

来我们分析一下为什么会造成以上两种不同的结果。
on是生成临时表时使用的条件,上面我们采用的是左外连接,左外连接是以左表为基础的,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。也就是说emp是左表,dept是右表,条件是emp的deptno与dept中的deptno相等且为40时才连接,但emp表中不存在deptno为40的记录,也就是右表没有符合条件的记录,而记录不足的地方均用NULL来补充。
而where是在临时表生成好后,再对临时表进行过滤。也就是说emp表与dept的连接条件只是emp的deptno与dept中的deptno相等,然后在对生成的临时表进行筛选,由于emp表中不存在deptno为40的记录,所以未找到符合条件的记录。

由于内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所有在内连接时on和where的结果是相同的。而左外、右外与全连接由于它的特殊性,on和where造成的差别大小取决于表达式和表中的数据。

MYSQL on和where的区别相关推荐

  1. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster等版本的区别

    MySQL分为多种版本如Community.Enterprise.Cluster和Workbench等,MySQL不同版本有什么区别?LAMPLNMP分享: MySQL版本区别 ● MySQL Com ...

  2. SQL Server 和 MySql 语法和关键字的区别

    (1)    MySQL的ifnull()函数对应sql的isnull()函数; (2)    mysql的存储过程中变量的定义去掉@; (3)    mysql的每句结束要用";" ...

  3. php里面sql是什么意思,MySQL和SQL是什么?MySQL和SQL之间的区别有哪些

    MySQL和SQL之间的区别有哪些?很多PHP的初学者,对MySQL,MyAdmin和SQL有什么区别并不是很清楚?下面 第一PHP社区 就带领大家来学习一下MySQL和SQL之间的区别.[推荐阅读: ...

  4. oracle数据库跟mysql的区别_关于Oracle数据库与MySQL数据库的几点区别

    Oracle数据库与MySQL数据库的区别是本文我们主要要介绍的内容,接下来我们就开始介绍这部分内容,希望能够对您有所帮助. Oracle与MySQL的区别: 1.在Oracle中用select * ...

  5. MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    深入理解MySQL的数据库引擎的类型 作者: 字体:[增加 减小] 类型:转载 本篇文章是对MySQL的数据库引擎的类型进行了详细的分析介绍,需要的朋友参考下   你能用的数据库引擎取决于mysql在 ...

  6. MySQL - change 和 modify 的区别

    表描述 MySQL 中 change 和 modify 区别 更改列名 change: alter table 表名 change 旧列名 新列名 类型 只更改列属性 change: alter ta ...

  7. SQL、MySQL与HiveSQL的使用区别ing

    SQL.MySQL与HiveSQL的使用区别 1 查询结果前10条数据 2 返回是周几的函数 3 查看表结构数量 4 获取当前时间 5 从数据库定位到某张表 6 分号字符: 7 IS [NOT] NU ...

  8. mysql 、oracle存储过程语法区别

    mysql .oracle存储过程语法区别 1.  条件语句:mysql使用elseif关键字,oracle是elsif关键字: oracle: if表达式 then 表达式: elsif 表达式: ...

  9. MySQL与Oracle的应用区别

    关系型数据库(Oracle与MySQL优缺点.使用区别) MySQL的特点 1.性能卓越,服务稳定,很少出现异常宕机: 2.开放源代码无版本制约,自主性及使用成本低: 3.历史悠久,社区和用户非常活跃 ...

  10. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster有何区别

    MySQL版本Enterprise/Community/Cluster有何区别 发布时间:2020-05-28 14:23:34 来源:PHP中文网 阅读:278 作者:三月 下面讲讲关于MySQL版 ...

最新文章

  1. 东北黑土区不同纬度农田土壤真菌分子生态网络的比较
  2. 那些不能错过的Xcode插件
  3. 聊聊redisson的DelayedQueue
  4. 汽车模型身上出现反射效果
  5. DEARGUI的安装
  6. python入门教程非常详细-python初学者怎么入门:python入门教程非常详细
  7. java压测请求线程数_程序员撕开京东 618 大促压测的另一面 | 原力计划
  8. Spring-IoC容器
  9. 2021 .NET Conf China 主题分享之-轻松玩转.NET大规模版本升级
  10. 困扰多年的PCB散热问题终于可以解决了!
  11. java操作solr基本方法
  12. 80-600-020-原理-存储引擎-简介
  13. 安卓java代码写控件_安卓自定义流程进度图控件实例代码
  14. 如何用python做俄罗斯方块_你的童年有俄罗斯方块吗?教你用 Python 实现俄罗斯方块!...
  15. 802.1x客户端 linux,Gentoo Linux--校园网(802.1x)拨号认证客户端解决方案
  16. 信号与系统——初识信号的原理与分类
  17. 计算机技能大赛简报,网络攻防比赛简报
  18. 小马哥----高仿机部分6735芯片机型的root方法浅析 高仿三星Galaxy S6 A228_4G刷机root
  19. 重磅 | 2020年区块链领域全球授权专利报告
  20. Ubuntu20安装erlang和rabbitmq

热门文章

  1. Android Studio Shape属性(上)
  2. 部分库函数的自我实现
  3. 移动互联网需求革命:由“生理需求”到“自我实现”
  4. Mac上最好用的LaTeX编辑器:Texpad for Mac
  5. 人脸识别有趣应用3——抠出人脸并给人脸涂上戏剧脸谱
  6. 神级总结:报价英文函电的常用金句
  7. int定义源码 python_【图片】Python 源码:int【西安网星软件吧】_百度贴吧
  8. java课设的总结和体会,JAVA设计培训心得体会【两篇】
  9. 【网络取证篇】suy网络工具包
  10. 晒弟弟考取的教资证写的朋友圈文案