inner join和outer join的區別
阿新 • • 發佈:2019-01-25
假設你要join兩個沒有重複列的表,這是最常見的情況:
-
inner join A 和 B 獲得的是A和B的交集(intersect),即韋恩圖(venn diagram) 相交的部分.
-
outer join A和B獲得的是A和B的並集(union), 即韋恩圖(venn diagram)的所有部分.
示例
假定有兩張表,每張表只有一列,列資料如下:
A B --13243546
注意(1,2)是A表獨有的,(3,4) 兩張共有, (5,6)是B獨有的。
Inner join
使用等號進行inner join以獲得兩表的交集,即共有的行。
select*from
Left outer join
left outer join 除了獲得B表中符合條件的列外,還將獲得A表所有的列。
select*from a LEFTOUTERJOIN b on a.a = b.b;select a.*,b.*from a,b where a.a = b.b(+); a | b --+-----1|null2|null3|34|4
Full outer join
full outer join 得到A和B的交集,即A和B中所有的行.。如果A中的行在B中沒有
select*from a FULLOUTERJOIN b on a.a = b.b; a | b -----+-----1|null2|null3|34|4null|6null|5