在hive中,關聯有4種方式:
- 內關聯:join on
- 左外關聯:left join on
- 右外關聯:right join on
- 全外關聯:full join on
另外還有一種可實現hive笛卡兒積的效果(hive不支持笛卡兒積): 在on后面接為true的表達式,如on 1=1(需先設置非嚴格模式:set hive.mapred.mode=nonstrict);
詳細操作和結果如下:
如我有兩個表:join1和join2,如下
內關聯:select * from jion1 join join2 on jion1.id = jion2.id;
- 作用:將表1和表2的字段id相同的內容 關聯到一個表里。
- 效果如下:
左外連接:select * from jion1 left join join2 on jion1.id = jion2.id;
- 作用:以join左邊的表為標准進行連接(即保留左邊表的字段值,右邊表不符合on條件的用null表示)。
- 效果如下:
右外連接:select * from jion1 right join join2 on jion1.id = jion2.id;
- 作用:以join右邊的表為標准進行連接(即保留右邊表的字段值,左邊表不符合on條件的用null表示)。
- 效果如下:
全外連接:select * from jion1 full join join2 on jion1.id = jion2.id;
- 作用:兩個表連接,表留所有字段的值,不符合on條件的用null表示。
- 效果如下:
hive的”笛卡兒積“:select * from join1 join join2 on 1=1;