HIVE中join、semi join、outer join举例详解

本文通过实例详细解释了Hive中的join操作,包括普通join、left outer join、right outer join、full outer join以及left semi join。通过对比不同类型的join在查询zz0和zz1表时的结果,展示了每种join类型的特点和使用场景,帮助读者深入理解Hive中的数据联接操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举例子:

hive> select * from zz0; 
111111 
222222 
888888 
hive> select * from zz1; 
111111 
333333 
444444 
888888

hive> select * from zz0 join zz1 on zz0.uid = zz1.uid; 
111111  111111 
888888  888888 
hive> select * from zz0 left outer join zz1 on zz0.uid = zz1.uid; 
111111  111111 
222222  NULL 
888888  888888 
hive> select * from zz0 right outer join zz1 on zz0.uid = zz1.uid; 
NULL 
111111  111111 
NULL    333333 
NULL    444444 
888888  888888 
hive> select * from zz0 full outer join zz1 on zz0.uid = zz1.uid; 
NULL 
111111  111111 
222222  NULL 
NULL    333333 
NULL    444444 
888888  888888 
hive> select * from zz0 left semi join zz1 on zz0.uid = zz1.uid; 
111111  
888888 

 

 

所谓的左半连接:  左连接就是展示左边表的东西 半就是展示半拉,就是只展示左表的东西

那么展示左表的那些东西呢? ---> 只展示左表中能根据条件匹配到右表的左表数值,

上面例子中根据 zz0.uid = zz1.uid 那么左表中只有 11111  88888能符合条件在右侧表zz1中找到

因此就只展示左侧表的 11111 88888,

如果在  select 左表字段, 右侧表.字段 left semi join

那么会报错,

这个报错是以前做的案例, Invalid table alias or column reference 'b': (possible column names are: id, name)

就是说只能展示左侧表的字段。

 

细节见:

HIVE中Join的专题---Join详解 http://www.aboutyun.com/thread-7392-1-1.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值