作者:我是帥帥的玉米
來源:https://segmentfault.com/a/1190000017369618
今天來說說關(guān)于MySQL那些年的小事。說到mySQL啊,用了挺久的了,但是有個問題一直在困擾著我,就是left join、join、right join和inner join等等各種join的區(qū)別。網(wǎng)上搜,最常見的就是一張圖解圖,如下:
真的是一張圖道清所有join的區(qū)別啊,可惜我還是看不懂,可能人比較懶,然后基本一個left join給我就是夠用的了,所以就沒怎么去仔細研究了,但是現(xiàn)實還是逼我去搞清楚,索性自己動手,總算理解圖中的含義了,下面就聽我一一道來。
首先,我們先來建兩張表,第一張表命名為kemu,第二張表命名為score:
一、left join
顧名思義,就是“左連接”,表1左連接表2,以左為主,表示以表1為主,關(guān)聯(lián)上表2的數(shù)據(jù),查出來的結(jié)果顯示左邊的所有數(shù)據(jù),然后右邊顯示的是和左邊有交集部分的數(shù)據(jù)。如下:
select * from kemu left join score on kemu.id = score.id
結(jié)果集:
二、right join
“右連接”,表1右連接表2,以右為主,表示以表2為主,關(guān)聯(lián)查詢表1的數(shù)據(jù),查出表2所有數(shù)據(jù)以及表1和表2有交集的數(shù)據(jù),如下:
select * from kemu right join score on kemu.id = score.id
結(jié)果集:
三、join
join,其實就是“inner join”,為了簡寫才寫成join,兩個是表示一個的,內(nèi)連接,表示以兩個表的交集為主,查出來是兩個表有交集的部分,其余沒有關(guān)聯(lián)就不額外顯示出來,這個用的情況也是挺多的,如下
select * from kemu join score on kemu.id = score.id
結(jié)果集:
以上就是三種連接的區(qū)別!