出處 http://www.runoob.com/sql/sql-join-inner.html
數(shù)據(jù)庫(kù)在通過(guò)連接兩張或多張表來(lái)返回記錄時(shí)匣屡,都會(huì)生成一張中間的臨時(shí)表髓堪,然后再將這張臨時(shí)表返回給用戶亿扁。
在使用 left jion 時(shí)猪叙,on 和 where 條件的區(qū)別如下:
1恐锣、 on 條件是在生成臨時(shí)表時(shí)使用的條件髓考,它不管 on 中的條件是否為真部念,都會(huì)返回左邊表中的記錄。
2绳军、where 條件是在臨時(shí)表生成好后印机,再對(duì)臨時(shí)表進(jìn)行過(guò)濾的條件。這時(shí)已經(jīng)沒(méi)有 left join 的含義(必須返回左邊表的記錄)了门驾,條件不為真的就全部過(guò)濾掉射赛。
(所以考慮到性能 減少臨時(shí)表的大小,應(yīng)該將過(guò)濾條件放到 on 奶是。)
left join 時(shí)候
情況1
student 表數(shù)據(jù)為
image.png
關(guān)聯(lián)表中 多了一個(gè) student 的id 為8 楣责,但是不在 student 表中
image.png
結(jié)果以左表為主(不會(huì)出現(xiàn)左表是null的情況)
image.png
情況2
一個(gè) student 對(duì)應(yīng)了多個(gè) teacher
image.png
結(jié)果student的相同數(shù)據(jù) 出現(xiàn) 多行 ,這里不注意的話 統(tǒng)計(jì)結(jié)果可能出錯(cuò)
jieguo