hive的连接查询

113 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

上一篇的结尾简单说了一下左联表查询和右联表查询,介绍了一下两者之间的区别,以及简单功能。下面详细说一下使用方法。

首先是左联表查询,一定要注意要全部保留的数据表要放在左边,这个方法的应用还是很多的,因为往往大数据分析都是会基于一张主表数据,保持输出表的数据和主表数据一致,这时候就都是用的左联表,将主表放在关键字的左边即可。

select a.name,b.grade from student a left outer join table_B b on a.id=b.id

这里就不展示数据结果了,大家可以自己试一试。

然后是右表关联查询,这个在实际数据开发中用的较少,但也是值得一说的。

select a.name,b.grade from student a right outer join table_B b on a.id=b.id

除了这两个关联,还有一个全表关联查询,这个全表关联,顾名思义就是将左表和右表的数据均保留下来,不满足关联条件而使得字段为空的就用null展示出来。

关键字就是full outer join。

select a.name,b.grade from student a full outer join table_B b on a.id=b.id

左表关联还有一种方式是左半表连接查询,这个结果获得的数据是符合右表on关联条件的数据。注意在此方法下面,在select和where中不要引用到右表中的字段,否则会报错。使用方法也和上面的其他语句类似。

select a.name from student a left semi join table_B b on a.id=b.id

该结果输出的就是a表的内容,不能输出b表的内容。

至此hive中的连接表查询方式都介绍完毕了,主要介绍的常用的几种方式,差不多能够满足日常的开发需求了。

日常最常用就是left join,用过left join后,还是可以加上where筛选的,这里会对主表数据进行过滤,导致主表数据条数和输出表条数不一样,这点需要注意一下。