left join 和 inner join

原创
2017/06/30 18:53
阅读数 166

left join 和 inner join

首先 MySQL 中 inner join 的效率确实要高于 left join。所以没必要使用 left join 转弯成 inner join 的效果。这样不但效率降低,可读性也会降低。

 

Number1

select 

from t1 left join t2 

where t2.field = value 

 

Number2

select 

from t1 left join t2  and t2.field = value

 

这两种写法涉及到一个条件位置不同查询结果就不一致的问题,Number1的意思其实和使用 inner join 效果是一致的,因为他对连接的结果做了过滤;

Number2 则是先对 t2 做过滤,然后再连接,所以他的结果集要大于 Number1,换句话说Number2的条件是强加在 t2 上的,而不是整个结果集。

另外,如果把查询条件改为 t2.field  is  null ; 前者与后者的结果是一致的,都是表示存在 t1 不存在 t2,所以这个比较特殊。

总之尽量不要使用 left join,除非业务需要,否则尽量使用 inner join.

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部