Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)
生活随笔
收集整理的這篇文章主要介紹了
Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
join語句
1 等值 join
Hive支持通常的SQL JOIN語句,但是只支持等值連接,==不支持非等值連接==。
案例實操
select * from stu left join score on stu.id = score.s_id;
根據學生和成績表,查詢學生姓名對應的成績
2 表的別名
好處
使用別名可以簡化查詢。
使用表名前綴可以提高執行效率。
案例實操:合并老師與課程表
-- hive當中創建course表并加載數據 create table course (c_id string, c_name string, t_id string)? row format delimited fields terminated by '\t'; ? load data local inpath '/xsluo/install/hivedatas/course.csv' overwrite into table course; ? select * from teacher t join course c on t.t_id = c.t_id;
3 內連接 inner join
內連接:只有進行連接的兩個表中都存在與連接條件相匹配的數據才會被保留下來。
join默認是inner join
案例實操
select * from teacher t inner join course c ?on t.t_id = c.t_id;
4 左外連接 left outer join
左外連接:
join操作符==左邊表中==符合where子句的所有記錄將會被返回。
右邊表的指定字段沒有符合條件的值的話,那么就使用null值替代。
案例實操:查詢老師對應的課程
select * from teacher t left outer join course c on t.t_id = c.t_id;
5 右外連接 right outer join
右外連接:
join操作符==右邊表中==符合where子句的所有記錄將會被返回。
左邊表的指定字段沒有符合條件的值的話,那么就使用null值替代。
案例實操
select * from teacher t right outer join course c on t.t_id = c.t_id;
6 滿外連接 full outer join
滿外連接:
將會返回==所有表中==符合where語句條件的所有記錄。
如果任一表的指定字段沒有符合條件的值的話,那么就使用null值替代。
案例實操
select * from teacher t full outer join course c on t.t_id = c.t_id;
7 多表連接
多個表使用join進行連接
==注意:==連接 n個表,至少需要n-1個連接條件。例如:連接三個表,至少需要兩個連接條件。
案例實操
select * from teacher t? left join course c on t.t_id = c.t_id? left join score s on c.c_id = s.c_id? left join stu on s.s_id = stu.id;
多表連接查詢,查詢老師對應的課程,以及對應的分數,對應的學生
?
總結
以上是生活随笔為你收集整理的Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何阻止windows 联网自动激活,避
- 下一篇: 短视频去水印API文档