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

:暂无数据 2026-04-02 01:20:01 0
有研究表明,成功掌握left join on and 和 where的区别的学习者,普遍在深入Oracle的left join中on和where的区别详解这个环节投入了更多精力。其重要性不言而喻。

本文目录

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

在使用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
两条**L:
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’)
第一条**L的过程:
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
第二条**L的过程:
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中,返回的结果集是相同的。

sql的join中on和where的区别

join包括:inner join,outer join

outer join又包括了:left outer join,right outer join 和 full outer join

natural on using

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

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

对于这样一个查询 select * from t1 natural left outer join t2 on t1.size=t2.size

on条件下回返回所有的左侧的元素,结果应该包含了(3,30,null)这一元组
对于另一个查询 select * from t1 natural left outer join t2 where t1.size=t2.size

它的结果却并不包含(3,30,null)这一元组,因为在执行where的时候,会在中间表(也就是表1)生成好后,执行过滤条件t1.size=t2.size,很明显这时候t1.size=3而t2..size=null,因此执行后的结果如下:
比较表1和表2会发现表1比表2多了一列,其实这也是on的特性。

在书中写到“on操作中,size出现两次,一次是t1中的,一次是t2中的,即便他们的值是一样的。”
上面的例子印证了一点:所有的外连接条件都必需要放在ON后面,不然前面的所有LEFT,和RIGHT关联将作为摆设,而不起任何作用。而对于普通连接,则几乎没有任何区别。

Oracle的left join中on和where的区别

on 一般用于设置连接条件的,比如学生表和修课表连接时:
学生表 LEFT JOIN 修课表 ON 学生表.学号=修课表学号
WHERE 一般用于设置过滤条件的,比如:WHERE 性别=’男’ AND 成绩》60分

left join 过滤条件写在on后面和写在where 后面的区别

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

left join on后面 加条件和where后面加条件的区别

用LEFTJOIN时,条件直接放ON后面,是先筛选后连接,条件放WHERE后面,是先连接后筛选

浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

你好,left
join,right,full后on和where的区别就在于:
on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录,而where条件是在临时表生成好后,再对临时表进行过滤的条件。
而且除了stu_id=1的那条记录,class表中字段不满足过滤条件的记录(即使被关联到了)全是null,所以on后面的语句最好只写两个表相关联的语句,并不能做单方面的过滤。
也可以这么简单的理解,以坐标为主,先查询出左表的全部记录,然后关联右表,将符合条件的记录的数据填充进查询出来的结果。
right
join

full
join
具有相同的特性,但是inner
join不同,它可以在on
那里做过滤处理,也就是说放在on后面和where后面作用是一样的。
希望对你有帮助

**L左右连接中的on and和on where的区别

原先一直对**L左右连接中的on and和on where的区别不是太了解,直到在网上看到了下面这段话才豁然开朗。
在使用left join时,on and和on where条件的区别如下:
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉,on后的条件用来生成左右表关联的临时表,where后的条件对临时表中的记录进行过滤。

on条件与where条件的区别

on条件与where条件的区别是:

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

2、在on后面加条件仅适合用于leftjoin(rightjoin未测,innerjoin与where类似)。

3、不考虑where条件下,leftjoin会把左表所有数据查询出来,on及其后面的条件仅仅会影响右表的数据(符合就显示,不符合全部为null)。

4、where后面加条件与左连接本身无关,影响的是连接产生后的数据。

5、所以左连接关注的是左边的主表数据,不应该把on后面的从表中的条件加到where后,这样会影响原有主表中的数据。

掌握深入Oracle的left join中on和where的区别详解,是深入理解left join on and 和 where的区别的关键一步。现在就开始尝试应用吧!
本文编辑:admin

更多文章:


arraylist取值(C# ArrayList如何动态添加对象及取值)

arraylist取值(C# ArrayList如何动态添加对象及取值)

嗨,正在屏幕前搜索arraylist取值的你,是否也被C# ArrayList如何动态添加对象及取值的问题困扰过?今天这篇内容就是为你准备的。

2026年4月2日 02:40

八上英语人教版电子书(本人急需初二上册人教版英语,生物,物理,语文,数学(大本)的电子书!各位有的同学能不能发给我)

八上英语人教版电子书(本人急需初二上册人教版英语,生物,物理,语文,数学(大本)的电子书!各位有的同学能不能发给我)

正如一位名家所言:“弄懂本人急需初二上册人教版英语,生物,物理,语文,数学(大本)的电子书!各位有的同学能不能发给我,是通往八上英语人教版电子书殿堂的捷径。” 今天,我们就来走一走这条捷径。

2026年4月2日 02:20

insert into 另一个表的数据(**L语句 怎么把从一个表中查出来数据插入到另一个表中)

insert into 另一个表的数据(**L语句 怎么把从一个表中查出来数据插入到另一个表中)

insert into 另一个表的数据的背后,隐藏着怎样的秘密?**L语句 怎么把从一个表中查出来数据插入到另一个表中又在其中扮演了何种角色?带着疑问,我们一起探秘。

2026年4月2日 02:00

shell是什么意思中文翻译成(shell是什么意思中文)

shell是什么意思中文翻译成(shell是什么意思中文)

本篇内容旨在成为您理解shell是什么意思中文翻译成的实用手册,其中shell是什么意思中文将是我们要重点打磨的章节。

2026年4月2日 01:40

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

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

有研究表明,成功掌握left join on and 和 where的区别的学习者,普遍在深入Oracle的left join中on和where的区别详解这个环节投入了更多精力。其重要性不言而喻。

2026年4月2日 01:20

动物体内常量元素(动物所必须的元素和人类所必须的元素是一样的吗)

动物体内常量元素(动物所必须的元素和人类所必须的元素是一样的吗)

你有没有想过,动物体内常量元素的关键突破口,可能就藏在动物所必须的元素和人类所必须的元素是一样的吗之中?本篇内容将为你验证这个猜想。

2026年4月2日 01:00

option selected(如何用一个option selected列表传递两个值)

option selected(如何用一个option selected列表传递两个值)

在深入了解option selected的路上,如何用一个option selected列表传递两个值就像一道绕不开的坎。别担心,本篇攻略将助你轻松跨越。

2026年4月2日 00:40

shell中grep命令详解(grep 用法)

shell中grep命令详解(grep 用法)

我们整理了关于shell中grep命令详解最高频的提问,发现grep 用法位列榜首。于是,就有了这篇集中解答的精华帖。

2026年4月2日 00:20

stdio怎么念(C语言中stdio.h 怎么读)

stdio怎么念(C语言中stdio.h 怎么读)

大家好,如果您对stdio怎么念还心存疑问,别着急,今天这篇文章就将围绕C语言中stdio.h 怎么读为您展开详细解说。

2026年4月2日 00:00

period用法(period短语搭配)

period用法(period短语搭配)

本篇文章给大家谈谈period用法,以及period短语搭配对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年4月1日 23:40

最近更新

arraylist取值(C# ArrayList如何动态添加对象及取值)
2026-04-02 02:40:01 浏览:0
left join on and 和 where的区别(深入Oracle的left join中on和where的区别详解)
2026-04-02 01:20:01 浏览:0
option selected(如何用一个option selected列表传递两个值)
2026-04-02 00:40:02 浏览:0
shell中grep命令详解(grep 用法)
2026-04-02 00:20:01 浏览:0
stdio怎么念(C语言中stdio.h 怎么读)
2026-04-02 00:00:01 浏览:0
period用法(period短语搭配)
2026-04-01 23:40:01 浏览:0
热门文章

kafka创建topic(ApacheKafka开源消息系统_kafka源码分析)
2026-04-01 16:20:01 浏览:0
shell中grep命令详解(grep 用法)
2026-04-02 00:20:01 浏览:0
标签列表