千家信息网

SQL语句中left join后用on还是where的区别有哪些

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"SQL语句中left join后用on还是where的区别有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SQL语句中left
千家信息网最后更新 2025年01月23日SQL语句中left join后用on还是where的区别有哪些

这篇文章主要讲解了"SQL语句中left join后用on还是where的区别有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SQL语句中left join后用on还是where的区别有哪些"吧!

前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。

后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。

不管and 后面的是A.id=1还是B.id=1,都显示出A表中所有的记录,并关联显示B中对应A表中id为1的记录或者B表中id为1的记录。

运行sql :

select * from student s left join class c on s.classId=c.id order by s.id

运行sql :

select * from student s left join class c on s.classId=c.id and s.name="张三" order by s.id

运行sql :

select * from student s left join class c on s.classId=c.id and c.name="三年级三班" order by s.id

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在使用left jion时,on和where条件的区别如下:

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

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

假设有两张表:

表1:tab2 表2:tab2 两条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

2、再对中间表过滤where 条件:

tab2.name='AAA'

第二条SQL的过程:

1、中间表on条件:

tab1.size = tab2.size and tab2.name='AAA'

(条件不为真也会返回左表中的记录) 其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

感谢各位的阅读,以上就是"SQL语句中left join后用on还是where的区别有哪些"的内容了,经过本文的学习后,相信大家对SQL语句中left join后用on还是where的区别有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

条件 还是 语句 结果 学习 生成 运行 特殊 内容 就是 是在 特殊性 过程 相同 关键 原因 含义 多张 年级 思路 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 匠星应用软件开发 沈阳铁西区软件开发 网络安全链路讲解 港服psn账号是什么服务器 网络技术发展的作文 初中学网络安全工程师 交通运输行业 网络安全 广东影响力互联网科技有限公司 网络安全模式不能安装软件吗 计算机硬件服务器的型号在哪里看 工业互联网平台汉脑科技专业 串口服务器无线 数据库如何插入属性列的数据信息 通过网址可以查询服务器吗 惠州哪个区软件开发多 软件开发日志是什么意思 域控服务器如何防护 腾讯云服务器 手机管理 外网服务器的管理设备 无线网络技术考点 广州网络安全专业大学 宇歌网络技术有限公司 我的世界创造建筑服务器手机版 虹口区无线网络技术售后保障 世界第三服务器公司 创意软件开发公司 机房ups电源服务器价格 浙江新一代软件开发服务价钱 数据库如何控制单个表 网站服务器架设到云有什么好处
0