作者:MetaTrade

HiveSQL中的JOIN ON条件

HiveSQL很常用的一个操作就是关联(Join)。Hive为用户提供了多种JOIN类型,可以满足不同的使用场景。但是,对于不同JOIN类型的语义,或许有些人对此不太清晰。简单的问题,往往是细节问题,而这些问题恰恰也是重要的问题。本文将围绕不同的JOIN类型,介绍JOIN的语义,并对每种JOIN类型需要注意的问题进行剖析,希望本文对你有所帮助。

JOIN类型

类型 含义
Inner Join 输出符合关联条件的数据
Left Join 输出左表的所有记录,对于右表符合关联的数据,输出右表,没有符合的,右表补null
Right Join 输出右表的所有记录,对于左表符合关联的数据,输出左表,没有符合的,左表补null
Full Join 输出左表和右表的所有记录,对于没有关联上的数据,未关联的另一侧补null
Left Semi Join 对于左表中的一条数据,如果右表存在符合关联条件的行,则输出左表
Left Anti Join 对于左表中的一条数据,如果对于右表所有的行,不存在符合关联条件的数据,则输出左表

JOIN的通用格式

SELECT 
        a.* 
        ,b.* 
FROM 
        (
                SELECT * 
                FROM a 
    
lock