码迷,mamicode.com
首页 > 其他好文 > 详细

Hive中join

时间:2015-04-29 21:35:46      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

Hive-表连接

1)Hive只支持等值连接,即ON子句中使用等号连接,不支持非等值连接。

2)如果连接语句中有WHERE子句,会先执行JOIN子句,再执行WHERE子句

3)测试

假设有以下测试数据

表user数据如下

User_id

name

1

张三

2

李四

3

王五

 表job数据如下

Job_id

job

user_id

1

工程师

1

2

美工

2

3

美工

4

建表语句如下

CREATE TABLE IF NOT EXISTS user(id int, name string) ROW FORMATDELIMITED FIELDS TERMINATED BY ‘\t’;

CREATE TABLE IF NOT EXISTS job(id int, job string, user_id int) ROWFORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;

 

内连接

内连接指的是把符合两边连接条件的数据查询出来。

执行以下语句

select * from user join job on user.id=job.user_id;

结果如下

技术分享

 

左外连接

左外连接:左边有,右边如果没有数据,那么为空。

执行以下语句

    select * from user left outer join job on user.id=job.user_id;

不能使用let join,只能使用left outerjoin。结果如下

 技术分享

右外连接

执行以下语句

select * from user right outer join job on user.id=job.user_id;

结果如下

技术分享

全外连接

执行以下语句

select * from user full outer join job on user.id=job.user_id;

结果如下

   技术分享

左半连接

执行以下语句,左半连接用来代替in操作或者exists操作的

select * from user left semi join job on user.id=job.user_id;

结果如下

技术分享

该语句相当于如下语句

select * from user where id in (select user_id from job);

但是,hive不支持in子句。所以只能变通,使用left semi子句。

 

 

Hive中join

标签:

原文地址:http://www.cnblogs.com/richelle009/p/4466954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!