原文地址:http://hi.baidu.com/benben1006/blog/item/187deb77bc0e5319b151b974.html

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

在使用left jion时,on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

假设有两张表:

表1:tab2

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’)

第一条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)

其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回leftright表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

转载于:https://www.cnblogs.com/antis/p/5587768.html

转:SQL:外连接on条件与where条件的区别相关推荐

  1. 外连接就是允许不满足条件的字段查询出来

    外连接就是允许不满足条件的字段查询出来 转载于:https://www.cnblogs.com/classmethond/p/10129069.html

  2. sql 外连接的写法。

    我地经常见到sql语句中 left outer join...    right outer join...  其实对于新手来讲见到呢d字眼系最头痛的. 首先现做个说明 左外连接就是左连接 右外连接就 ...

  3. SQL外连接之交集、并集、差集查询

    接上一小节的内容,重点讲述了外连接的类型,外连接的语法结构,本小节将会在外连接的基础上,重点阐述下交集.并集.差集查询. 1.交集 交集的示意图如下: 语法结构为: A.B的交集: select * ...

  4. 【mysql】左外连接查询中 on 和 where 的区别

    论点 在使用 mysql 的左外连接(left join)查询时,驱动表(left join 左边的表),亦即数据需要全部被查出表的查询条件建议用 where 设定,被驱动表(left join 右边 ...

  5. SQL的进阶之路05:外连接

    SQL外连接是常用的格式转换方式,分为全连接,左连接,右连接.本节专门对外连接的特性进行讲解! 一,利用外联接进行(行->列) 利用这张表生成下面这样格式的表格: SELECT C0.NAME, ...

  6. 数据库内连接、左外连接、右外连接中的on、and、where条件使用

    数据库各种连接方式的on.and.where条件使用 文章目录 前言 使用on条件,A为主表 使用on条件,B为主表 使用on.and主表条件 使用on.where主表条件 使用on.and条件,a. ...

  7. mysql数据库外连_数据库外连接及MySQL实现

    MySQL查询分为内连接查询和外连接查询,他们的区别在于:内连接查询的两个表示对等关系,根据条件进行匹配:外连接是以某一个表为主,两一个表根据条件进行关联.外连接分为左外连接.右外连接和全外连接.本文 ...

  8. 数据库-内连接与外连接的区别(举例说明)

    原文链接:https://blog.csdn.net/Dove_Knowledge/article/details/71420206 1.内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出 ...

  9. sql sum条件求和_SQL进阶7外连接(outer join)

    本文中介绍的SQL中行列转换和嵌套式侧栏的生成,将SQL语句查询的结果转换成我们想要的结果. 行转列,制作交叉表头 列转行 实现行列转换(行->列):制作交叉表 需求 根据下面的表Courses ...

最新文章

  1. perl 字符串删除末尾几个字符_Perl字符串处理函数大全
  2. 打印出所有的水仙花数javascript_习题4-6 水仙花数 (20分)
  3. 作为程序员,这些实用工具你必须要知道!
  4. maven工程错误汇总
  5. 足不出户,游遍七大洲,不可错过的14部地理纪录片!
  6. 四、MySQL分页查询 + 子查询复习 学习笔记 (复习连接查询相关内容 详解)
  7. Java前端笔记-后端Springboot,前端vue,Nginx使前后端分离
  8. 企业的创新和创新的双面性
  9. 华为智慧屏云会议怎么操作_像玩手机一样玩转车机,华为智选车载智慧屏是怎么做到的?...
  10. *循环单链表[不带头结点]
  11. 将计算机设置成交换机主机名,各种交换机配置命令
  12. 【精度】概率论之概念解析:边缘化(Marginalisation)
  13. 智能营销增益(Uplift Modeling)模型——pylift库的使用(二)
  14. HTML常用meta小结
  15. 地铁WIFI值28亿?运营商终于不用背锅了
  16. 浅谈 web 端测试点
  17. yoyo跑_yoyo主持人5岁女儿照片曝光 其老公魏哲浩个人资料简介
  18. 人工智能火爆 国内这几家计算机视觉公司值得关注
  19. 从1亿美元到10亿美元,博世/大陆看到的自动驾驶量产技术趋势
  20. 游戏数值策划-经验值计算公式设计(自百度文库)

热门文章

  1. python可哈希_Python,TypeError:不可哈希类型:'list'
  2. 为什么一个程序中变量只能定义一次_什么是闭包?为什么叫闭包?
  3. ios 短信验证码自动填充时总是被复制两遍
  4. go mysql id为0_go 语言中mysql操作200万数据时应该如何写?
  5. for i in range什么意思_python迭代和解析——range、map函数
  6. macmini作为远程服务器,如何使用Macbook Pro远程免密码登录Mac mini
  7. ce修改面板属性_脑叶公司员工属性CE修改教程
  8. python爬取贴吧_Python爬取贴吧(简洁版)
  9. android command line tools 下载,Mac 安装 Android commandlinetools 各种报错的问题
  10. docker 数据卷 mysql_Docker 入门教程(五)数据卷 Volumes