left join on and 和 where的区别(浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别)

:暂无数据 2026-04-03 02:20:01 0
想高效掌握left join on and 和 where的区别的核心吗?本文将为你聚焦浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别这一关键环节,帮你节省大量摸索时间。

本文目录

浅谈,**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后面作用是一样的。
希望对你有帮助

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关联将作为摆设,而不起任何作用。而对于普通连接,则几乎没有任何区别。

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

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

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

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

Oracle的left join中on和where的区别

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

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后,这样会影响原有主表中的数据。

**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后的条件对临时表中的记录进行过滤。

深入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中,返回的结果集是相同的。

感谢你花费时间阅读这篇关于left join on and 和 where的区别的长文。我们深知,把浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别这样的复杂概念讲清楚不易,如果你觉得我们做到了,请告诉我们;如果还有疑问,更请告诉我们!
本文编辑:admin

本文相关文章:


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

更多文章:


sql format函数用法(在C#中的 Sql语句中 sql += string.Format(“.“);怎么理解)

sql format函数用法(在C#中的 Sql语句中 sql += string.Format(“.“);怎么理解)

关于sql format函数用法,有一个概念至关重要,那就是在C#中的 Sql语句中 sql += string.Format(“.“);怎么理解。它为何如此重要?且听我们慢慢道来。

2026年4月3日 03:40

如何打开json文件怎么打开(json怎么在pr里打开)

如何打开json文件怎么打开(json怎么在pr里打开)

前几天,一位朋友问我:如何打开json文件怎么打开到底该怎么学?我只回了他三个字:抓住json怎么在pr里打开。今天就来详细说说为什么。

2026年4月3日 03:20

configure is locked(packet tracer use config Tab is locked 如何解除)

configure is locked(packet tracer use config Tab is locked 如何解除)

正如一位名家所言:“弄懂packet tracer use config Tab is locked 如何解除,是通往configure is locked殿堂的捷径。” 今天,我们就来走一走这条捷径。

2026年4月3日 03:00

mysql安装密码check失败怎么解决(My**L安装不成功)

mysql安装密码check失败怎么解决(My**L安装不成功)

各位朋友,关于mysql安装密码check失败怎么解决的讨论一直很多,今天咱们不聊复杂的,就聚焦于My**L安装不成功,用最直白的方式把它讲清楚。

2026年4月3日 02:40

left join on and 和 where的区别(浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别)

left join on and 和 where的区别(浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别)

想高效掌握left join on and 和 where的区别的核心吗?本文将为你聚焦浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别这一关键环节,帮你节省大量摸索时间。

2026年4月3日 02:20

js脚本形式乐谱(脚本有哪些)

js脚本形式乐谱(脚本有哪些)

“js脚本形式乐谱”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看js脚本形式乐谱(脚本有哪些)!

2026年4月3日 02:00

redhat命令大全(RedHat中cat命令怎么用)

redhat命令大全(RedHat中cat命令怎么用)

今天这份关于redhat命令大全的指南,将用80%的篇幅讲透RedHat中cat命令怎么用这个决定成败的细节,绝对让你不虚此行。

2026年4月3日 01:40

72进制转换计算器(WIN7的计算器怎么转换进制)

72进制转换计算器(WIN7的计算器怎么转换进制)

上一篇文章我们介绍了72进制转换计算器的基础,今天我们将深入其核心环节——WIN7的计算器怎么转换进制,看看它如何承前启后。

2026年4月3日 01:20

管理系统登录界面(江苏省高中学籍管理系统怎么登录)

管理系统登录界面(江苏省高中学籍管理系统怎么登录)

相信点开这篇文章的你,一定对管理系统登录界面抱有好奇。没关系,下面我们就结合江苏省高中学籍管理系统怎么登录,带你一步步揭开它的面纱。

2026年4月3日 01:00

系统自带驱动缺失local(你的电脑无法启动,原因是关键驱动程序丢失或者包含错误)

系统自带驱动缺失local(你的电脑无法启动,原因是关键驱动程序丢失或者包含错误)

相信点开这篇文章的你,一定对系统自带驱动缺失local抱有好奇。没关系,下面我们就结合你的电脑无法启动,原因是关键驱动程序丢失或者包含错误,带你一步步揭开它的面纱。

2026年4月3日 00:40

最近更新

configure is locked(packet tracer use config Tab is locked 如何解除)
2026-04-03 03:00:01 浏览:0
left join on and 和 where的区别(浅谈,**L语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别)
2026-04-03 02:20:01 浏览:0
js脚本形式乐谱(脚本有哪些)
2026-04-03 02:00:02 浏览:0
热门文章

jsp的javabean(JSP中的JavaBean问题)
2026-04-02 12:00:01 浏览:0
include造句(including include分别造句 越简单越好)
2026-04-02 09:20:01 浏览:0
left join on and 和 where的区别(深入Oracle的left join中on和where的区别详解)
2026-04-02 01:20:01 浏览:0
标签列表