数据库在通过连接两张或者多张表返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户

在使用inner join(内连接)没有区别,但是 在使用left jion时,on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。(返回左表全部记录)。此时可能会出现与右表不匹配的记录即为空的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。

假设有两张表:表1:tab1

id
size
1
10
2
20
3
30

表2:tab2

size
name
10
AAA
20
BBB
20
CCC

两条SQL:
1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’
2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)

3、select * from tab1 left join tab2 on (tab1.size = tab2.size and tab2.name='AAA') where tab2.id is not null;

2和3是等价的。只是2中包含了不匹配的结果所有与1不等价。

第一条SQL的过程:

1、中间表
on条件: 
tab1.size = tab2.size
tab1.id tab1.size tab2.size tab2.name
1
10
10
AAA
2
20
20
BBB
2
20
20
CCC
3
30
(null)
(null)
|
|

2、再对中间表过滤
where 条件:
tab2.name=’AAA’

tab1.id tab1.size tab2.size tab2.name
1
10
10
AAA
   

第二条SQL的过程:

1、中间表
on条件: 
tab1.size = tab2.size and tab2.name=’AAA’
(条件不为真也会返回左表中的记录)
tab1.id tab1.size tab2.size tab2.name
1
10
10
AAA
2
20
(null)
(null)
3
30
(null)
(null)
(转)

转载于:https://www.cnblogs.com/qiaoyanlin/p/6746502.html

数据库之“on”“where”区别相关推荐

  1. sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系

    原创链接:https://www.cnblogs.com/lxf1117/p/6762315.html sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户 ...

  2. 数仓和mysql的区别_数据库和数据仓库的区别和联系

    数据库与数据仓库的区别和联系https://www.zhihu.com/video/1252167793992593408 在以往我们和客户的沟通过程中,大家经常会问到这样的一个问题,数据库和数据仓库 ...

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

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

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

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

  5. 星型模型 3nf的区别_数据库和数据仓库的区别和联系

    数据库与数据仓库的区别和联系https://www.zhihu.com/video/1252167793992593408 在以往我们和客户的沟通过程中,大家经常会问到这样的一个问题,数据库和数据仓库 ...

  6. 数据库like和rlike区别

    数据库like和rlike区别 like,通配符,使用时需指定具体值.如:用like筛选某张表姓张的人全部信息,或名字叫张三的信息.张或张三就必须写为具体值. rlike,正则,模糊查询.区间范围判断 ...

  7. 政府信息化与电子政务、企业信息化与电子商务、数据库和数据仓库的区别、商业智能系统处理过程、数据仓库结构图、数据挖掘、数据仓库和数据湖的对比

    政府信息化与电子政务.企业信息化与电子商务.数据库和数据仓库的区别.商业智能系统处理过程.数据仓库结构图.数据挖掘.数据仓库和数据湖的对比 政府信息化与电子政务 企业信息化与电子商务 1.企业资源计划 ...

  8. mysql数据库有哪些版本_MySQL数据库各个版本的区别

    MySQL数据库各个版本的区别 MySQL数据库 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管 ...

  9. 关系型数据库和非关系型区别

    一.关系型数据库和非关系型 1.数据存储方式不同. 关系型数据天然就是表格式的,因此存储在数据表的行和列中,结构化存储. 非关系型数据通常存储在数据集中,就像文档.键值对.列存储.图结构. 2.扩展方 ...

  10. 数据库种类大全及区别

    数据库种类大全及区别: [备注:鸣谢链接:https://blog.csdn.net/aaronthon/article/details/81714528] 一. 数据库共有2种类型:关系型数据库.非 ...

最新文章

  1. 关于Linux中文件权限的探究
  2. vue启动时报错,node-modules下xxx缺失
  3. FFmpeg从入门到精通:SEI那些事
  4. 谁是现在最年轻的院士?
  5. 数据库导出到excel解决科学计数法问题
  6. java优先级队列使用
  7. (4)FPGA面试题同步逻辑和异步逻辑
  8. python framebuffer_Linux中LCD设备驱动
  9. 解封装(五):AVStream和AVCodecParameters分析
  10. 【编程语言】Python-Pandas库中的透视表
  11. 语音识别市场竞争激烈,亚马逊崛起与微软衰落形成反差
  12. 计算机系统组成导学案,单元一任务2认识计算机系统的组成导学案.pdf
  13. java 去除敏感词
  14. CSS命名规范--BEM
  15. 爬取雪球网的新闻数据
  16. 1到10加法创新图片-走迷宫_“小火锅+关东煮”,呷哺呷哺又创新模式!客单提到110元!...
  17. 内网安全 域环境的搭建(模仿真实内网环境 做渗透测试.)
  18. python爬虫 — 爬取豆瓣最受关注图书榜
  19. IT行业里的热门技术 | 热门IT技术项目分享 | 详细介绍一下机器人技术
  20. 大闸蟹的 O O 第三单元日子——中测与强测的惨烈修罗场

热门文章

  1. 内存碎片过高优化的功能和原理
  2. html双击单元格修改,JS实现鼠标双击选中表格单元格代码
  3. ruoyi 多模块部署_基于若依(RuoYi)脚手架的前端项目部署(vue)
  4. vue 打印出来但显示未定义_CAD图形能显示却打印不出来如何解决?
  5. 使用adb命令结束android中的进程,两种方法 kill -9 和 am force-stop的相同与区别
  6. 阅读分布式锁文章总结
  7. qml调用python_QML使用Python的函数
  8. 组态王通过串口服务器通讯smart200_实例讲解通过代码调试串口通讯的方法
  9. Spring源码之bean的加载(一)
  10. 【渝粤教育】国家开放大学2018年秋季 0221-22T数字电子电路 参考试题