前言
上篇博客入门篇(十九)介绍的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都只能