首页
学习
活动
专区
圈层
工具
发布

大数据-Hive联表语句

2.9. JOIN 语句

2.9.1. 等值 JOIN

Hive支持通常的SQL JOIN语句,但是只支持等值连接,不支持非等值连接。

案例操作: 查询分数对应的姓名

代码语言:javascript
复制
SELECT s.s_id,s.s_score,stu.s_name,stu.s_birth FROM score s LEFT JOIN student stu ON s.s_id = stu.s_ **

2.9.2. 表的别名

  • 好处
    • 使用别名可以简化查询。
    • 使用表名前缀可以提高执行效率。
  • 案例实操:合并老师与课程表
代码语言:javascript
复制
select * from techer t join course c on t.t_id = c.t_id;

2.9.3. 内连接

内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。

代码语言:javascript
复制
select * from techer t inner join course c on t.t_id = c.t_id;

2.9.4. 左外连接

左外连接:JOIN操作符左边表中符合WHERE子句的所有记录将会被返回。 查询老师对应的课程

代码语言:javascript
复制
select * from techer t left join course c on t.t_id = c.t_id;

2.9.5. 右外连接

右外连接:JOIN操作符右边表中符合WHERE子句的所有记录将会被返回。

代码语言:javascript
复制
select * from teacher t right join course c on t.t_id = c.t_id;

2.9.6. 多表连接

注意:连接 n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。 多表连接查询,查询老师对应的课程,以及对应的分数,对应的学生

代码语言:javascript
复制
select * from teacher t 
left join course c on t.t_id = c.t_id 
left join score s on s.c_id = c.c_id 
left join student stu on s.s_id = stu.s_id;

大多数情况下,Hive会对每对JOIN连接对象启动一个MapReduce任务。本例中会首先启动一个MapReduce job对表 techer和表course进行连接操作,然后会再启动一个MapReduce job将第一个MapReduce job的输出和表score;进行连 接操作。

下一篇
举报
领券