sql中on与where的区别
来源:互联网 发布:python shell 参数 编辑:程序博客网 时间:2024/05/23 16:49
数据库在通过连接两张或者多张表返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户在使用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.sizetab1.idtab1.sizetab2.sizetab2.name
1
10
10
AAA
2
20
20
BBB
2
20
20
CCC
3
30
(null)
(null)
|
|
2、再对中间表过滤
where 条件:
tab2.name=’AAA’
1
10
10
AAA
第二条SQL的过程:
1、中间表on条件:
tab1.size = tab2.size and tab2.name=’AAA’
(条件不为真也会返回左表中的记录)
0 0
- sql中on与where的区别
- sql中on与where的区别
- SQL中on条件与where条件的区别&&on、where、having的区别
- sql(join中on与where区别)
- sql(join中on与where区别)
- sql(join中on与where区别)
- sql(join中on与where区别)
- sql(join中on与where区别)
- sql(join中on与where区别)
- SQL中on条件与where条件的区别
- SQL中on条件与where条件的区别[转]
- SQL中on条件与where条件的区别(转载)
- SQL中on条件与where条件的区别[转]
- SQL中on条件与where条件的区别
- SQL中on条件与where条件的区别
- SQL join中on与where的区别介绍
- SQL中on条件与where条件的区别[转]
- SQL中on条件与where条件的区别
- python中list去重复
- php curl常用的5个例子
- WSDL文件生成
- Unity 3d Shader实践 —— 第一个Shader
- linux文件权限
- sql中on与where的区别
- javaSE基础测试题
- PowerDesigner中如何生成主键和自增列
- Python-OpenCV 处理图像(四)(五):图像直方图和反向投影 图像中边界和轮廓检测
- 获取POST参数
- 细说Android事件传递
- 存储过程中的符合条件查询 and 1= ''+@knlgName+''
- 杭电ACM 1000
- <canvas>学习笔记——文字显示控制