表與表之間的連接

其實,表A與表B的連接和高中時候學的集合是一樣的。

要讓兩個表能夠連接,必須有字段是一樣的,或者說,是通過這個字段聯繫這兩張表的。

比如表A是員工表,員工表裏有一個字段爲dept_id。表B是部門表,部門表的主鍵id就可以和dept_id聯繫起來。

用Venn圖很容易表示表與表連接的幾種情況:

(經常有人問:表與表有哪幾種連接?)

1,2
在這裏插入圖片描述
3,4
在這裏插入圖片描述
5,6
在這裏插入圖片描述
7
在這裏插入圖片描述

整兩張表來說明情況:

員工表字段:
id,姓名,部門id。

部門表字段:
id,部門名字,樓層。

插入一些數據:


RD是research department,HR是human resource,MK是marketing,MIS是management information system,FD是financial department。這些都是部門的名字。

看一下員工表,發現9號員工ocean他的部門沒有在部門表中有對應。

同樣的,在部門表中,5號部門也沒有任何員工和他對應。

這樣的設計是爲了演示的方便。


先來簡單的,我們看第2個inner join,要的是兩張表的公共部分:

然後是熟悉的left join,A的獨有+AB的共有:


比上面多了一條A獨有的記錄。

同樣的,right join就是B的獨有+AB的共有:


5,6都搞定了。

現在我們看3,4。

3是A的獨有。所以我們要在left join的基礎上去掉AB的共有。


這就是A的獨有。

同樣的,

這是B的獨有。

我們看最後一個7。

它是A的獨有拼上B的獨有,有了3和4的基礎,接下來只要union一下就可以了。


這就是A的獨有加上B的獨有。

或許你會說,圖上不是用full outer join嗎?對的,但是mysql不支持這樣的語法。

最後我們看1。

它是4和5的結合:


A的獨有+B的獨有+AB的共有。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章