Hive 基本教程

Hive SQL

Hive 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/hive-sql-union.html

Hive UNION 和 UNION ALL 用法详解

Hive SQL 数据操作(DML)详解 Hive SQL 数据操作(DML)详解


Apache Hive 查询中 UNION 关键字用来将两个或多个表合并后进行查询,需要保证 SELECT 中字段须一致,每个 SELECT 语句返回的列的数量和名字必须一样,否则,会抛出语法错误。具体它有两种用法,一个是后接 DISTINCT,也可以不写,另一个是后跟 ALL 关键字。

UNION 和 UNION ALL

语法:

select_statement UNION [ALL | DISTINCT] select_statement UNION [ALL | DISTINCT] select_statement …

从语法中可以看出 UNION 有两个可选的关键字:

  1. 使用 ALL 关键字,不会删除重复行,也就是保留所有结果集,同时也没任何排序,由于只是简单地将两个列相同的表合并,所以效率比较快。
  2. 使用 DISTINCT 关键字与使用 UNION 默认值效果一样,都会删除重复行,同时进行默认规则的排序,作用等价于先 DISTINCT 去重、再 UNION ALL 表合并、再 ORDER BY 排序,效率方面它是 UNION ALL 的3倍,所以,数据量大时,不建议直接用 UNION

Hive 1.2.0 之前的版本仅支持 UNION ALL,其中重复的行不会被删除。

Hive 1.2.0 和更高版本中,UNION 的默认行为是从结果中删除重复的行。

UNION 在 FROM 子查询中

在 Hive 0.12.0 和更低版本中,UNION 只能在子查询中使用,如下示例:

SELECT *
FROM (
  select_statement
  UNION ALL
  select_statement
) unionResultAlias

UNION 支持在顶级查询中

从 Hive 0.13.0 开始,UNION 也可以在顶级查询中使用,如下示例:

select_statement 
UNION ALL 
select_statement 
UNION ALL …
在 MariaDB 数据库中,UNION运算符用于组合两个或更多SELECT语句的结果集。它删除各种SELECT语句之间的重复行。 ...
在Hive中,INSERTOVERWRITE和INSERTINTO是用于将数据加载到表中的两种常见方式。示例代码:INSERTOVERWRI ...
Hive SQL 聚合统计函数 COUNT 类似于标准 SQL 的 COUNT 函数,用来计算符合条件的行数。 ...
Hive SQL 条件函数 IF 是用于处理单个列的判断查询结果,形式为 if(条件表达式, 结果1, 结果2),相当于 java 中的三目 ...
Hive SQL 中将字符串拼接的函数是 CONCAT,它返回指定参数的连接字符串,此函数可以接受任意数量的输入字符串。 ...