Hive 中如何使用 UNION 运算符?

· 约 3 分钟读完 · 第 72 / 124 章

推荐答案

在 Hive 中,UNION 运算符用于将两个或多个 SELECT 语句的结果集合并为一个结果集。UNION 会去除重复的行,而 UNION ALL 则会保留所有行,包括重复的行。

语法

示例

假设有两个表 table1 和 table2,它们的结构相同,包含 id 和 name 两列。

这个查询将返回 table1 和 table2 中所有不重复的 id 和 name 组合。

本题详细解读

1. UNION 与 UNION ALL 的区别

  • UNION:合并两个或多个 SELECT 语句的结果集,并去除重复的行。
  • UNION ALL:合并两个或多个 SELECT 语句的结果集,但保留所有行,包括重复的行。

2. 使用场景

  • UNION:当你需要合并多个查询结果,并且不希望结果集中出现重复数据时使用。
  • UNION ALL:当你需要合并多个查询结果,并且允许结果集中出现重复数据时使用。

3. 注意事项

  • 列数和数据类型:UNION 或 UNION ALL 操作的所有 SELECT 语句必须具有相同数量的列,并且对应列的数据类型必须兼容。
  • 性能:UNION 由于需要去重,性能通常比 UNION ALL 差。如果不需要去重,建议使用 UNION ALL 以提高查询性能。

4. 示例扩展

假设 table1 和 table2 的数据如下:

table1

id name
1 Alice
2 Bob

table2

id name
2 Bob
3 Carol

使用 UNION:

结果

id name
1 Alice
2 Bob
3 Carol

使用 UNION ALL:

结果

id name
1 Alice
2 Bob
2 Bob
3 Carol

5. 总结

  • UNION 用于合并结果集并去重。
  • UNION ALL 用于合并结果集并保留所有行。
  • 使用时需确保 SELECT 语句的列数和数据类型一致。