2014年1月5日 星期日

SQL查詢的inner join & outer join

剛開始學習SQL時,

常聽到關於inner join和outer join的問題,

自己研究了之後,

用以下簡單的例子分享給對此有疑慮的開發者,

Table Member











Table Dept









一般的inner join,

指的是兩個table都有相互對應到資料,

簡單的說就是只會查詢出交集的部分,

SQL語法通常會這樣下:

select * from member m,dept d where m.dept=d.no

查詢結果









可以看到查詢出來的結果,只有兩邊有交集的部分,

member的Daniel和dept的machine因為沒有交集所以不會列出來。

在outer join的部分,分成left join和right join,

left join以左邊table為主,附加對應出右邊table的資料,沒有的顯示null

right join 則以右邊table為主,附加顯示左邊table的資料

如果以下left join語法查詢

select * from member m left join dept d on m.dept=d.no

查詢結果










可看到Daniel的部門E7無法在dept裡找到資料,則顯示為null

如果用以下的right join語法查詢

select * from member m right join dept d on m.dept=d.no











在dept裡的W0 machine也因為對應不到member的人員資料而顯示為null。

沒有留言:

張貼留言