hive 之join的用法

Join 在 hive 中可将两个表连接在一起。包括join,inner join,left join, right join, full outer join,left semi join等,下面进行一一讲解。

表student
表student

表sc
表sc

##join(等同于inner join)
左右两表中id字段相同的做迪卡尔积,若只有一张表中出现了某id,则该值不会出现在结果中。

1
select * from student s join sc on s.sno = sc.sno;

left join(right join 类似)

左右两表中id字段相同的做迪卡尔积,若只有左表中出现了某id,则结果中会出现该条记录,但右部分用null补齐;若只有右表中出现了某id,则该值不会出现在结果中。

1
select * from student s left join sc on s.sno = sc.sno;

full outer join

左右两表中id字段相同的做迪卡尔积,若只有一张表中出现了某id,则结果中会出现该记录,左右缺失部分用null补齐。

1
select * from student s full outer join sc on s.sno = sc.sno;

##left semi join
相当于inner join中取左边的一半

1
select * from student s left semi join sc on s.sno = sc.sno;