常聽到關於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。
沒有留言:
張貼留言