转:SQL:外连接on条件与where条件的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用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的过程:
|
第二条SQL的过程:
|
其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。
转载于:https://www.cnblogs.com/antis/p/5587768.html
转:SQL:外连接on条件与where条件的区别相关推荐
- 外连接就是允许不满足条件的字段查询出来
外连接就是允许不满足条件的字段查询出来 转载于:https://www.cnblogs.com/classmethond/p/10129069.html
- sql 外连接的写法。
我地经常见到sql语句中 left outer join... right outer join... 其实对于新手来讲见到呢d字眼系最头痛的. 首先现做个说明 左外连接就是左连接 右外连接就 ...
- SQL外连接之交集、并集、差集查询
接上一小节的内容,重点讲述了外连接的类型,外连接的语法结构,本小节将会在外连接的基础上,重点阐述下交集.并集.差集查询. 1.交集 交集的示意图如下: 语法结构为: A.B的交集: select * ...
- 【mysql】左外连接查询中 on 和 where 的区别
论点 在使用 mysql 的左外连接(left join)查询时,驱动表(left join 左边的表),亦即数据需要全部被查出表的查询条件建议用 where 设定,被驱动表(left join 右边 ...
- SQL的进阶之路05:外连接
SQL外连接是常用的格式转换方式,分为全连接,左连接,右连接.本节专门对外连接的特性进行讲解! 一,利用外联接进行(行->列) 利用这张表生成下面这样格式的表格: SELECT C0.NAME, ...
- 数据库内连接、左外连接、右外连接中的on、and、where条件使用
数据库各种连接方式的on.and.where条件使用 文章目录 前言 使用on条件,A为主表 使用on条件,B为主表 使用on.and主表条件 使用on.where主表条件 使用on.and条件,a. ...
- mysql数据库外连_数据库外连接及MySQL实现
MySQL查询分为内连接查询和外连接查询,他们的区别在于:内连接查询的两个表示对等关系,根据条件进行匹配:外连接是以某一个表为主,两一个表根据条件进行关联.外连接分为左外连接.右外连接和全外连接.本文 ...
- 数据库-内连接与外连接的区别(举例说明)
原文链接:https://blog.csdn.net/Dove_Knowledge/article/details/71420206 1.内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出 ...
- sql sum条件求和_SQL进阶7外连接(outer join)
本文中介绍的SQL中行列转换和嵌套式侧栏的生成,将SQL语句查询的结果转换成我们想要的结果. 行转列,制作交叉表头 列转行 实现行列转换(行->列):制作交叉表 需求 根据下面的表Courses ...
最新文章
- perl 字符串删除末尾几个字符_Perl字符串处理函数大全
- 打印出所有的水仙花数javascript_习题4-6 水仙花数 (20分)
- 作为程序员,这些实用工具你必须要知道!
- maven工程错误汇总
- 足不出户,游遍七大洲,不可错过的14部地理纪录片!
- 四、MySQL分页查询 + 子查询复习 学习笔记 (复习连接查询相关内容 详解)
- Java前端笔记-后端Springboot,前端vue,Nginx使前后端分离
- 企业的创新和创新的双面性
- 华为智慧屏云会议怎么操作_像玩手机一样玩转车机,华为智选车载智慧屏是怎么做到的?...
- *循环单链表[不带头结点]
- 将计算机设置成交换机主机名,各种交换机配置命令
- 【精度】概率论之概念解析:边缘化(Marginalisation)
- 智能营销增益(Uplift Modeling)模型——pylift库的使用(二)
- HTML常用meta小结
- 地铁WIFI值28亿?运营商终于不用背锅了
- 浅谈 web 端测试点
- yoyo跑_yoyo主持人5岁女儿照片曝光 其老公魏哲浩个人资料简介
- 人工智能火爆 国内这几家计算机视觉公司值得关注
- 从1亿美元到10亿美元,博世/大陆看到的自动驾驶量产技术趋势
- 游戏数值策划-经验值计算公式设计(自百度文库)
热门文章
- python可哈希_Python,TypeError:不可哈希类型:'list'
- 为什么一个程序中变量只能定义一次_什么是闭包?为什么叫闭包?
- ios 短信验证码自动填充时总是被复制两遍
- go mysql id为0_go 语言中mysql操作200万数据时应该如何写?
- for i in range什么意思_python迭代和解析——range、map函数
- macmini作为远程服务器,如何使用Macbook Pro远程免密码登录Mac mini
- ce修改面板属性_脑叶公司员工属性CE修改教程
- python爬取贴吧_Python爬取贴吧(简洁版)
- android command line tools 下载,Mac 安装 Android commandlinetools 各种报错的问题
- docker 数据卷 mysql_Docker 入门教程(五)数据卷 Volumes