SQL语句中on和where的用法区别讲解


当前第2页 返回上一页

1

2

3

4

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.sizetab1.idtab1.sizetab2.sizetab2.name11010AAA22020BBB22020CCC330(null)(null)||2、再对中间表过滤where 条件(此时不为真的行会被过滤掉):tab2.name=’AAA’tab1.idtab1.sizetab2.sizetab2.name11010AAA

第二条SQL的过程:

1、中间表on条件: tab1.size = tab2.size and tab2.name=’AAA’(条件不为真也会返回左表中的记录)tab1.idtab1.sizetab2.sizetab2.name11010AAA220(null)(null)330(null)(null)

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

总结:

总的来说,就是where语句会过滤掉含NULL的行数(条件为假的行数)。所以在FULL JOIN语句中where语句和on语句的结果差别最大;在JOIN/INNER JOIN 语句中没有差别;在LEFT JOIN 和 RIGHT JOIN中差别大小取决于表达式和表中的数据。

以上就是SQL语句中on和where的用法区别讲解的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

sql语句中on和where的用法区别讲解

mysql两种引擎的有什么区别

主键和唯一索引的有什么区别

sql命令中where短语的功能是什么?

mysql和sql是什么?mysql和sql之间的区别有哪些

关于mysql max 与 where 间的执行问题小结

mysql中普通、慢查询日志的区别

mysql的where查询的重新认识

sql语句中where 1=1是什么意思

mysql中普通索引和唯一索引的区别详解

更多相关阅读请进入《where》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...