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。
相关推荐
得物技术12 小时前
从“人治”到“机治”:得物离线数仓发布流水线质量门禁实践
大数据·数据仓库
小邓睡不饱耶12 小时前
Sqoop 实战:数据迁移核心案例、优化技巧与企业级落地
hive·hadoop·sqoop
沃达德软件15 小时前
重点人员动态管控系统解析
数据仓库·人工智能·hive·hadoop·redis·hbase
xianyinsuifeng16 小时前
RAG + Code Analysis 的标准路线
数据仓库·自动化·云计算·原型模式·aws
ruxshui16 小时前
个人笔记: 星环Inceptor/hive普通分区表与范围分区表核心技术总结
hive·hadoop·笔记
2501_9272835819 小时前
仓库升级进行时:当传统仓储遇到“四向穿梭车”
数据仓库·人工智能·自动化·wms·制造
Gain_chance19 小时前
26-学习笔记尚硅谷数仓搭建-DIM层特殊的维度表——用户维度表的建表、分析及DIM层数据装载脚本
数据仓库·hive·笔记·学习
TTBIGDATA1 天前
【Hue 】Hue 访问 YARN 返回 403 权限问题
大数据·hadoop·ambari·hdp·国产化·hue·bigtop
TTBIGDATA1 天前
【Knox】Knox 转发访问 Trino Web UI 返回 406 错误的原因与处理
大数据·运维·前端·hadoop·ui·ambari·hdp
Gain_chance2 天前
25-学习笔记尚硅谷数仓搭建-DIM层其余(优惠卷、活动、地区、营销坑位、营销渠道、日期)维度表建表语句、简单分析
数据仓库·笔记·学习