hive:几个join的差别汇总

本文总结了Hive中的几种JOIN操作,包括笛卡尔积、INNER JOIN、LEFT JOIN和RIGHT JOIN。LEFT JOIN在无连接条件时产生与笛卡尔积相同的结果。INNER JOIN返回两个表中匹配的记录,LEFT JOIN保留左边表所有记录,而RIGHT JOIN保留右边表所有记录。交换LEFT JOIN的表位置相当于RIGHT JOIN。

employee表
在这里插入图片描述
department表
在这里插入图片描述

1.笛卡尔积

select * from employee a ,department b;

在这里插入图片描述
共4*2=8条结果。

2.inner join

select * from employee a 
inner join department b
on a.DepartmentId=b.id; 

等价于

select * from employee a ,department b
where a.DepartmentId=b.id; 

在这里插入图片描述

3.left join

返回满足连接条件的左边表的所有记录,若左边表的某些记录在右边表中没有匹配记录,右边表则显示null。

(1)如果不指定连接条件,left join的结果将和笛卡尔积的结果相同。
select * from employee a 
left join department b;

在这里插入图片描述

(2)employee left join department
select * from employee a 
left join department b
on a.DepartmentId=b.id;

在这里插入图片描述

(3)department left join employee

交换一下left join左右两表的位置:
department left join employee的结果 = employee right join department的结果(显示位置不同)

select * from department a
left join  employee b 
on a.id=b.departmentId;

在这里插入图片描述

4.right join

返回满足连接条件的右边表的所有记录,若右边表的记录在左边表中没有匹配记录,左边表则显示null。

select * from employee a 
right join department b;

在这里插入图片描述

select * from employee a 
right join department b
on a.departmentId=b.id;

等价于

select * from employee a 
left join department b
on a.departmentId=b.id
where b.name is not null;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值