Join 在 hive 中可将两个表连接在一起。包括join
,inner join
,left join
, right join
, full outer join
,left semi join
等,下面进行一一讲解。
表student
表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;