hive中的六种数据连接方式

本文介绍了Hive中的六种数据连接方式,包括内连接、左外连接、右外连接、全连接、左半连接和交叉连接,强调了在实际工作中的应用和区别,以及交叉连接的特殊性。

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

数据连接方式在hive中属于那种非常简单但又非常重要的知识,几乎所有的工作中都需要用到表连接。

本文旨在让刚接触大数据的家人们更好地理解数据连接的方式,所以主要是通过形象的方式来向大家直观地展示六种数据连接方式的连接方法,而不会很着重于代码(我该死啊)

 

hive中数据连接方式有如下六种:

扫盲:数据连接代码的共有格式

select  *  from  table1  连接方式  table2  on  连接规则;

其中,连接方式就是上方图片中提到的六种方式,而连接规则则是两张表中字段的对应方式。

首先,我们准备两张表:students表和class表

下面我将展示各种方式连接后的数据情况

一、内连接(inner  join)

select s.*,c.* from students s inner join class c on s.class_id=c.class_id;

内连接就是将两张表连接后,左表和右表中没能配对成功的数据都将被整条移除,只留下配对成功的数据

二、左外连接(left  outer  join)

select s.*,c.* from students s left outer join class c on s.class_id=c.class_id;

左外连接就是以左表为主,保留左表的全部数据,把右表配对进来,配对不上的数据用null来进行填充(右表中配对不上的多余数据会被移除)

三、右外连接(right  outer  join)

select s.*,c.* from students s right outer join class c on s.class_id=c.class_id;

与左外连接相反,右外连接以右表为主,保留右表的全部数据,把左表配对进来,配对不上的数据用null填充(左表中多余数据会被删除)

四、全连接(full  outer  join)

select s.*,c.* from students s full outer join class c on s.class_id=c.class_id;

全连接保留左右两张表的全部数据,配对不上的用null填充

五、左半连接(left  semi  join)

select s.*,c.* from students s left semi join class c on s.class_id=c.class_id;

左半连接就是把左表、右表进行内连接,然后舍弃掉右表中的数据,仅返回左表中剩余的数据。

注意:没有右半连接,要达到右半连接的效果至于要把右表当作左表来用即可。

六、交叉连接(cross  join)

交叉连接的数据条数就是两个表的笛卡尔积(两表数据条数之积),交叉连接后的数据不存在配对关系,其sql甚至不需要指定连接规则

select s.*,c.* from students s cross join class c;

如图所示,交叉连接就是将右表的每一条数据分别拿出来,配对上左表的每一条数据,然后重复此步骤,直到右表的所有数据完成配对。(左表有7条数据,右表有4条数据,故cross  join后总共有4*7=28条数据)

交叉连接的作用微乎其微,在工作中也几乎不会用到,所以只需要重点了解前五种连接方式即可(交叉连接或许可以在跟朋友吹水时让你多点话说,嘿嘿嘿)

突然临时想起来加一句:所有连接方式中的inner和outer均可省略~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值