问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

深入Oracle的left join中on和where的区别详解

发布网友 发布时间:2022-04-07 18:58

我来回答

2个回答

热心网友 时间:2022-04-07 20:28

在使用left jion时,on和where条件的区别如下:
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left
join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

假设有两张表:

表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')
第一条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上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner
jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

热心网友 时间:2022-04-07 21:46

select a.*,B.*
form A a
left join B b on a.seq =b.seq and b.del_code ='A'

select a.*,B.*
from A a
left join B b on a.seq =b.seq
where b.del_code ='A'
两个SQL语句是有区别的,第一个SQL,如果B表中没有符合条件的数据,因为是LEFT JOIN,所以查询的结果相当于是select a.* form A a,第二个SQL,条件在where中,如果B表中没有符合条件的数据,查询的结果就是为空。LFET join也就失去了意义。
希望能够帮到你。
深入Oracle的left join中on和where的区别详解

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

深入Oracle的left join中on和where的区别详解

on是表与表之间的关联关系。where是表的检索条件。

深入Oracle的left join中on和where的区别详解

on是两个或多个表的连接条件。where是几个表连接检索后,形成的数据结果里再加的检索条件。

深入Oracle的left join中on和where的区别详解

这个问题,怎么深入? on 是两个表或多张表的关联条件,where是要查找内容的筛选条件。on 对left join负责,where对表负责。不懂点在哪?

深入Oracle的left join中on和where的区别详解

一般来说,on部分,是写的连接条件,或者a left b,如果要对b进行筛选,那么也应该写到on里面 where部分,是筛选条件;当多表连接时,对整个查询结果进行筛选。

深入Oracle的left join中on和where的区别详解

on是标明关联表之间的关联关系,而where是用于对单表的条件限制

深入Oracle的left join中on和where的区别详解

ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.例如: (低效) SELECT … FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO)...

Oracle的left join中on和where的区别

left join中on是在联接表的时候就先对右表进行条件过滤,而where,是在表的串联及过滤完成之后,再对串联后的结果进行过滤。

Oracle中表的四种连接方式讲解

代表除了显示匹配相等连接条件的信息之外 还显示左条件所在的表中无法匹配相等连接条件的信息 此时也称为 左外连接 SELECT FROM 表 LEFT OUTER JOIN 表 ON 连接条件 例 显示员工信息以及所对应的部门信息 无法显示没有部门的员工信息 无法显示没有员工的部门信息 SELECT * FROM EMP DEPT WHERE EMP ...

Oracle中Left Outer Join和外关联的区别

外关联是Oracle数据库的专有语句 Left Outer Join则是SQL-92的标准语句 通常认为这两个SQL是可以等效的,但还是有些细微的差别。一般说来,外关联的等值条件等效于Left Outer Join中的on语句;两个where中其他语句是一样的。但是Left Outer Join中的其他条件(非表连接)出现在On关键词后面还是出现在...

join on和where的区别 join和left join区别 leftjoin和where效率 left join on and left outer join join和where left join on 多条件 left join on用法 left join on多表关联
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
房贷审批期间可以用支付宝网商贷吗 ...共10分) (1)写出图中字母所代表的气候带名称:A.__ 如何通过idea自动化部署springboot项目? 跟着我一起学IT:Spring boot项目搭建 3dsmax没下在C盘,下完后为什么C盘空间少了大约1G? 茶叶保存方法有哪几种 如何在家自制正宗的酱鸭菜泡饭? 酱鸭菜泡饭酱鸭菜泡饭的做法 请问按下屏幕打印键Print Screen,截取的图片系统保存在哪个位置?_百度... 抖音中的v是什么意思 蓝莓开花了,需要授粉吗 蓝莓花刚掉后的样子 蓝莓开花带果移栽种植 能活吗? 蓝莓开花了,需要授粉吗? 蓝莓开花两个月后会结果吗 晒干的蓝莓花可以泡水喝吗 盆栽蓝莓能吃么? 离婚协议中将房产赠与给孩子的行为可否撤销 想知道女人有多在意你,从细节里能够看出来吗? 女人老不老,看看身体就知道,看哪几个部位就知道? 泸州哪里在招学生兼职啊?求解答。。。 急急急 看看女人胸部夹着些什么? 女人哪些地方越大, 你就越健康, 看看你们占了几条? 男人想要看看女人相片都得不到那么多男人是不是没戏了? 看看女人是怎么快速成熟的 女人身材标准表:看看你的哪个部位最美 一个男人紧看看女人的眼睛,这是为什么 电脑端有哪些游戏平台 帮忙看看这个女人的面相? 泸州哪里找周末兼职工作? 请问西安的古城墙是什么年代的? 西安城墙有多少年的历史? 女生姨妈痛怎么办 大姨妈来了肚子痛怎么办? 骂狗打鸡猪在笑,三心两意不成气.打一肖 腾讯视频会员借别人的号怎么不要绑定 骂狗打鸡猪在笑,猜一生肖 骂狗打鸡猪在笑,四心两意不成气打一肖 骂狗打鸡猪在笑三心二成气是什么生肖 骂狗打鸡猪在笑,三心二意不成气,红绿相同不定期是什么生肖 骂狗打鸡猪在笑,三心二意不成气,打一生肖 骂狗打鸡猪在笑是什么生肖 骂狗打鸡猪在笑,三心两意不成气 COSplay中的羽毛翅膀怎么做的? 泰拉瑞亚手机版怎么做翅膀? 打鸡骂狗猪在笑,打—生肖 什么动物三心二意 手机版泰拉瑞亚翅膀怎么做 如何制作翅膀能扇动的鸟模型 狗鸡猪在笑,三两不成心。解动物