1. 程式人生 > >Hive UNION ALL的使用和Hive子查詢

Hive UNION ALL的使用和Hive子查詢

UNION的使用

union用於聯合多個select語句的結果集,合併為一個獨立的結果集。當前只支援UNION ALL(bag union)。不能消除重複行,每個select語句返回的列的數量和名字必須一樣,否則會丟擲語法錯誤。

select_statement UNION ALL select_statement UNION ALL select_statement.....

如果必須對union的結果集做一些額外的處理,整個語句可以被嵌入在from子句中。

select * from from(
    select_statement
        UNION ALL
    select_statement
    ) unionResult

Hive子查詢

子查詢語法

select .... from (subquery) name  ...

Hive只在from子句中支援子查詢。子查詢必須給定一個名字,因為每個表在from子句中必須有一個名字。子查詢的查詢列表的列,必須有唯一的名字。子查詢的查詢列表在外面的查詢是可用的,就向表的列。子查詢也可以一個UNION查詢表示式,Hive支援任意層次的子查詢。

示例1:

select col from (
    select a+b as col from t1
    ) t2;

示例2:

select t3.col from(
    select a+b as
col from t1 UNION ALL select c+d as col from t2 ) as t3;