HiveSQL很常用的一个操作就是关联(Join)。Hive为用户提供了多种JOIN类型,可以满足不同的使用场景。但是,对于不同JOIN类型的语义,或许有些人对此不太清晰。简单的问题,往往是细节问题,而这些问题恰恰也是重要的问题。本文将围绕不同的JOIN类型,介绍JOIN的语义,并对每种JOIN类型需要注意的问题进行剖析,希望本文对你有所帮助。
类型 | 含义 |
---|---|
Inner Join | 输出符合关联条件的数据 |
Left Join | 输出左表的所有记录,对于右表符合关联的数据,输出右表,没有符合的,右表补null |
Right Join | 输出右表的所有记录,对于左表符合关联的数据,输出左表,没有符合的,左表补null |
Full Join | 输出左表和右表的所有记录,对于没有关联上的数据,未关联的另一侧补null |
Left Semi Join | 对于左表中的一条数据,如果右表存在符合关联条件的行,则输出左表 |
Left Anti Join | 对于左表中的一条数据,如果对于右表所有的行,不存在符合关联条件的数据,则输出左表 |
SELECT
a.*
,b.*
FROM
(
SELECT *
FROM a