Hive中UNION ALL和UNION的区别

1.概述

   Hive官方提供了一种联合查询的语法,原名为Union Syntax,用于联合两个表的记录进行查询,此处的联合和join是不同的,join是将两个表的字段拼接到一起,而union是将两个表的记录拼接在一起。 换言之, join是用于左右拼接,而union是用于上下拼接。

2.语法

sql 复制代码
select_statement UNION [ALL | DISTINCT] select_statement UNION [ALL | DISTINCT] select_statement ...

UNION是将多个查询结果集合并到一个结果中。UNION与UNION ALL的区别是 union会对两个子查询的结果去重合并,而union all不会对子查询结果去重处理。

注:

  • Hive 1.2.0之前的版本仅支持UNION ALL,其中重复的行不会被删除。
  • Hive 1.2.0和更高版本中, union的默认从结果中删除重复行。使用可选的distinct关键字指定了删除重复行。使用可选的all关键字,不会删除重复行,结果包含select语句中的所有匹配行。
    • 可以在同一查询中混合使用union all和union distinct。
    • 每个select语句返回的列的数量和名称必须相同,否则报错。

3.使用案例

3.1 准备数据

test1表数据

id username ds
001 zhangsan 20240307
002 lisi 20240307
003 wangwu 20240307

test2表数据

id username ds
002 lisi 20240307
003 wangwu 20240307
004 zhaoliu 20240307

3.2 查询结果

UNION的查询结果

sql 复制代码
SELECT  id
       ,username
FROM    test1
WHERE   ds = '${bizdate}'
UNION 
SELECT  id
       ,username
FROM   test2
WHERE   ds = '${bizdate}';
id username
001 zhangsan
002 lisi
003 wangwu
004 zhaoliu

UNION ALL 的查询结果

id username
002 lisi
003 wangwu
001 zhangsan
002 lisi
004 zhaoliu
003 wangwu

4.总结

联合查询方式 UNION UNION ALL
对重复结果的处理 筛选掉重复的结果 不会去除重复记录
对排序的处理 将两个结果合并后并返回 会按照字段的顺序进行排序
效率 快 慢
总述 不去重不排序 去重并排序
  • UNION ALL:不去重不排序直接原表合并。
  • UNION:先表合并、再去重、再排序。<=>作用等价于 先distinct去重、再UNION ALL表合并、再order by排序。
  • 效率方面,UNION是UNION ALL的3倍。数据量大时,不建议直接用UNION,建议先去重再UNION ALL。
相关推荐
IT毕设梦工厂11 小时前
计算机毕业设计选题推荐:基于大数据的杭州亚运会社交媒体互动数据可视化分析|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·信息可视化·数据挖掘·数据分析·课程设计·数据分析数据可视化
CarIise17 小时前
Spring Boot整合MyBatis与文件上传:从分层架构到文件上传下载实战
数据仓库·hive·hadoop
计算机源码社20 小时前
【27届大数据毕设】基于Spark的TikTok短视频属性分享与互动比率可视化分析系统 基于机器学习的TikTok短视频认证属性与互动效能关联分析
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
ha_lydms1 天前
MaxCompute中加密与解密函数
大数据·数据库·数据仓库·hadoop·dataworks·maxcompute·odps
Q26433650232 天前
【有源码】基于Spark的电商客户细分与盈利洞察分析系统-面向精准营销的电商客户细分模型构建与盈利能力可视化研究
大数据·hadoop·分布式·数据挖掘·数据分析·spark·毕业设计
计算机源码社2 天前
【27届大数据毕设】基于Spark的AI艺术创作者价值评估与市场趋势预测研究 基于Python与Spark的AI生成艺术受众画像及异常热度识别可视化平台
大数据·人工智能·hadoop·python·spark·毕业设计·课程设计
千桐科技2 天前
数据中台 ETL 编排实践:基于 qData 开源版实现数据接入、转换与调度执行
数据仓库·开源·etl
ha_lydms2 天前
MaxCompute中窗口函数
大数据·hadoop·阿里云·云计算·dataworks·maxcompute·odps
千里码aicood3 天前
基于Hadoop的机票价格波动分析系统的设计与实现
大数据·hadoop·分布式
IT毕设梦工厂3 天前
计算机毕业设计选题推荐:基于大数据的供应链数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hive·hadoop·python·数据分析·spark·课程设计