LEFT JOIN的条件写在ON中和WHERE的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LEFT JOIN的条件写在ON中和WHERE的区别相关的知识,希望对你有一定的参考价值。

参考技术A 这个条件在你这里的情况下,写在 ON 和 WHRER 里是不一样的。
写在 AND 里是先执行后再 WHERE
写在 WHERE 里是后执行,看一下执行计划就一切都明了了,可以看一下我给你弄的图
把条件写在 WHERE 里,Left Join 自动变成 INNER JOIN 了,结果当然不一样
参考技术B left join (select * from table where ...) t on ...使用过滤条件 参考技术C 我们的确是不是也

pg中join,left join的使用,将条件放到on和where后面的区别问题

postgresql中left join中将条件放入 on和where的区别。
1.on是肯定会返回左表的数据,所以在on里面的条件都会返回,如果想要过滤数据则需要在where中加条件
2.由于 inner join是两表都有的,所以,返回的结果是和where条件一样的。

示例:
select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’
select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)

以上是关于LEFT JOIN的条件写在ON中和WHERE的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

Oracle的left join中on和where的区别

Oracle的left join中on和where的区别

为啥以及何时在 WHERE 子句中带有条件的 LEFT JOIN 不等于在 ON 中的相同 LEFT JOIN? [复制]

pg中join,left join的使用,将条件放到on和where后面的区别问题

mysql left join中where和on条件的区别