INNER/LEFT/RIGHT JOIN ON与WHERE的区别
2018-07-08 13:12
471 查看
1.LEFT或RIGHT JOIN ON后面的过滤条件即使不成立也会返回左表或右表的全部记录,如果要过滤掉不符合条件的数据,则要把过滤条件放在WHERE后面。
tab1:
![](https://oscimg.oschina.net/oscnet/28d0207f0d9a27c1e46111d363ba1709b87.jpg)
tab2:
![](https://oscimg.oschina.net/oscnet/24394e9f7ed93a2c1d00bbd02e58ff8eb7f.jpg)
过滤条件在ON后面:
![](https://oscimg.oschina.net/oscnet/71353f9aee36054369843d9cc9c68498331.jpg)
过滤条件在WHERE后面:
![](https://oscimg.oschina.net/oscnet/ad16c458ca268b2d2f9e2c6f423fdaaca18.jpg)
结果是不同的
2.INNER JOIN ON后面的过滤条件也可以放在WHERE后面,效果相同。
过滤条件在ON后面:
![](https://oscimg.oschina.net/oscnet/6cd848a9a79a942d80b13b48fc004a34dd4.jpg)
过滤条件在WHERE后面:
![](https://oscimg.oschina.net/oscnet/ddc554b60b4ac240c6e5155a535902e606d.jpg)
结果相同
总结:对于LEFT/RIGHT JOIN参与的表的关联操作,如果需要不满足连接条件的行也在查询范围内的话,就把连接条件放在ON后面,而不能放在WHERE后面,如果把连接条件放在了WHERE后面,那么所有的LEFT/RIGHT操作将不起任何作用,对于这种情况,它的效果就完全等同于INNER连接。对于那些不影响选择行的条件,放在ON或者WHERE后面就可以。
tab1:
![](https://oscimg.oschina.net/oscnet/28d0207f0d9a27c1e46111d363ba1709b87.jpg)
tab2:
![](https://oscimg.oschina.net/oscnet/24394e9f7ed93a2c1d00bbd02e58ff8eb7f.jpg)
过滤条件在ON后面:
![](https://oscimg.oschina.net/oscnet/71353f9aee36054369843d9cc9c68498331.jpg)
过滤条件在WHERE后面:
![](https://oscimg.oschina.net/oscnet/ad16c458ca268b2d2f9e2c6f423fdaaca18.jpg)
结果是不同的
2.INNER JOIN ON后面的过滤条件也可以放在WHERE后面,效果相同。
过滤条件在ON后面:
![](https://oscimg.oschina.net/oscnet/6cd848a9a79a942d80b13b48fc004a34dd4.jpg)
过滤条件在WHERE后面:
![](https://oscimg.oschina.net/oscnet/ddc554b60b4ac240c6e5155a535902e606d.jpg)
结果相同
总结:对于LEFT/RIGHT JOIN参与的表的关联操作,如果需要不满足连接条件的行也在查询范围内的话,就把连接条件放在ON后面,而不能放在WHERE后面,如果把连接条件放在了WHERE后面,那么所有的LEFT/RIGHT操作将不起任何作用,对于这种情况,它的效果就完全等同于INNER连接。对于那些不影响选择行的条件,放在ON或者WHERE后面就可以。
相关文章推荐
- sql中left、inner、right join on和where的区别
- 解析sql语句中left_join、inner_join中的on与where的区别
- 解析sql语句中left_join、inner_join中的on与where的区别
- 解析sql语句中left_join、inner_join中的on与where的区别
- left join/right join 的on条件 跟where的区别
- inner join left join right join on where
- 解析sql语句中left_join、inner_join中的on与where的区别
- left_join、inner_join中的on与where的区别
- sql语法中的inner join on, left join on和 right join on的区别和详细使用方法(转载)
- inner join on, left join on, right join on的区别与介绍
- inner join on, left join on, right join on的区别与介绍
- inner join on, left join on, right join on的区别与介绍
- sql语法:inner join on, left join on, right join on详细使用方法
- left join on and与left join on where的区别
- 举例说明left/right/inner join之间的区别
- SQL中各种Join语句(left、right、full、inner)的区别
- left join on and 与 left join on where的区别
- inner join on, left join on, right join on详细介绍
- sql语法:inner join on, left join on, right join on详细使用方法
- mysql连表查询之left join on / right join on / inner&nb