Hive零基础从入门到实战 入门篇(二十) HiveQL:UNION ALL语句

前言

上篇博客入门篇(十九)介绍的JOIN语句是将多个表的列 ‘横向合并’,本篇要介绍的UNION ALL语句则是将多个表的列纵向合并,相当于将多个表的数据直接摞在一起,下面我们来详细介绍UNION ALL语句的用法。

1. 语法

1.1 Hive1.2.0后的语法

Hive1.2.0之后版本的语法如下:

SELECT * FROM a

UNION [ALL] 

SELECT * FROM b

UNION [ALL] 

SELECT * FROM c 
…

[]中的ALL是可选项,使用UNION时会对最后合并的数据进行去重,使用UNION ALL则只合并不去重。

但是!

我至今没有见过公司使用Hive1.2.0之后的版本……常见的Hive版本在0.13.0之后,1.1.0之前。

1.2 Hive0.13.0到1.1.0的语法

语法如下:

SELECT * FROM a

UNION ALL

SELECT * FROM b

UNION ALL

SELECT * FROM c 
…

也就是说目前在绝大多数公司的Hive中只支持UNION ALL,不支持去重的UNION操作,想要去重需要自己使用子查询,套一层使用DISTINCT或者GROUP BY进行去重。

在0.13.0之后所有的版本中UNION ALL既可以在顶级查询中使用,也可以在子查询中使用。

而在0.13.0之前的版本,也就是从0.12.0往前,UNION ALL都只能

猜你喜欢

转载自blog.csdn.net/qq_23897391/article/details/92803543