【SQL】SQL中on条件与where条件的区别
2024-09-09 11:57:58
#前言
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
#实验
#假设有两张表:
表1:tab1
id
|
age
|
1
|
10
|
2
|
20
|
3
|
30
|
表2:tab2
age
|
name
|
10
|
张三
|
20
|
李四
|
20
|
王五
|
#两条SQL:
--1、where 条件筛选
select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’张三’
--2、on条件筛选
select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’张三’)
第一条SQL的过程:
|
第二条SQL的过程:
|
#总结:
其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。
参考: https://www.cnblogs.com/sky6699/p/5238584.html
最新文章
- Tower是个不错的项目管理开放平台
- jcmd、jmc介绍
- sql 在not in 子查询有null值情况下经常出现的陷阱
- jquery ajax error函数详解
- A星寻路算法
- hdu 1162 Eddy's picture(最小生成树,基础)
- mac下设置maven环境
- 分享下VellLock源代码。。。VellLock正式开源
- PostgreSQL9.5 新特性
- 字符串(AC自动机):COCI 2015 round 5 divljak
- TCP/IP协议原理与应用笔记08:对等层和对等实体
- css+javascript 写的HTML5 微信端输入支付密码键盘
- thinkpad yoga 12 / thinkpad s1 yoga / WS860
- lua 中 socket 通信示例
- 利用STM32CubeMX之SPI
- tornado.ioloop.IOLoop相关文章
- linux/Mac使用du查看目录占用的磁盘大小
- Java 8学习之Lambda表达式
- 我们一起学习WCF 第八篇回调函数
- db2快照