left join 和 inner join
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
left join 和 inner join
首先 MySQL 中 inner join 的效率確實(shí)要高于 left join。所以沒(méi)必要使用 left join 轉(zhuǎn)彎成 inner join 的效果。這樣不但效率降低,可讀性也會(huì)降低。
?
Number1
select?
from t1 left join t2?
where t2.field = value?
?
Number2
select?
from t1 left join t2 ?and?t2.field = value
?
這兩種寫(xiě)法涉及到一個(gè)條件位置不同查詢結(jié)果就不一致的問(wèn)題,Number1的意思其實(shí)和使用 inner join 效果是一致的,因?yàn)樗麑?duì)連接的結(jié)果做了過(guò)濾;
Number2 則是先對(duì) t2 做過(guò)濾,然后再連接,所以他的結(jié)果集要大于 Number1,換句話說(shuō)Number2的條件是強(qiáng)加在 t2 上的,而不是整個(gè)結(jié)果集。
另外,如果把查詢條件改為?t2.field? is ?null ; 前者與后者的結(jié)果是一致的,都是表示存在 t1 不存在 t2,所以這個(gè)比較特殊。
總之盡量不要使用 left join,除非業(yè)務(wù)需要,否則盡量使用 inner join.
轉(zhuǎn)載于:https://my.oschina.net/heweipo/blog/1083430
總結(jié)
以上是生活随笔為你收集整理的left join 和 inner join的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 去除列表中重复的元素
- 下一篇: 腾讯视频转码,把qlv格式转换成mp4格