hive 各種 join (left outer join、join、full outer join)
阿新 • • 發佈:2019-01-27
一、概念
1、左連線 left outer join
以左邊表為準,逐條去右邊表找相同欄位,如果有多條會依次列出
2、連線join
找出左右相同同的記錄
3、全連線 full outer join
包括兩個表的join結果,左邊在右邊中沒找到的結果(NULL),右邊在左邊沒找到的結果
二、實驗
1、準備資料
create external table IF NOT EXISTS temp_testjoin_ta ( label string, qu string ) partitioned by (dt string) row format delimited fields terminated by '\t' stored as textfile; ALTER TABLE temp_testjoin_ta ADD IF NOT EXISTS PARTITION (dt = '2014-08-08') location '/temp/jinlong10/testjoin/ta'; l1 q1 l1 q2 create external table IF NOT EXISTS temp_testjoin_tb ( qu string, inmyway string ) partitioned by (dt string) row format delimited fields terminated by '\t' stored as textfile; ALTER TABLE temp_testjoin_tb ADD IF NOT EXISTS PARTITION (dt = '2014-08-08') location '/temp/jinlong10/testjoin/tb/'; q1 i1 q1 i1 q1 i2 q1 i3 q2 i1 q2 i2 q3 i10
2、join
select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu ; l1 q1 q1 i1 l1 q1 q1 i1 l1 q1 q1 i2 l1 q1 q1 i3 l1 q2 q2 i1 l1 q2 q2 i2 select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu group by label,inmyway; l1 i1 l1 i2 l1 i3
3、left outer join
select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta left outer join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu ; l1 q1 q1 i1 l1 q1 q1 i1 l1 q1 q1 i2 l1 q1 q1 i3 l1 q2 q2 i1 l1 q2 q2 i2 select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta left outer join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu group by label,inmyway; l1 i1 l1 i2 l1 i3
3、full outer join
select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta full outer join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu ;
l1 q1 q1 i1
l1 q1 q1 i1
l1 q1 q1 i2
l1 q1 q1 i3
l2 q1 q1 i1
l2 q1 q1 i1
l2 q1 q1 i2
l2 q1 q1 i3
l1 q123 NULL NULL
l1 q2 q2 i1
l1 q2 q2 i2
NULL NULL q3 i10