Presto 中如何使用 UNION 运算符?

推荐答案

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

基本语法

示例

假设有两个表 employeescontractors,它们都有 namesalary 列。我们可以使用 UNION 来合并这两个表中的数据:

使用 UNION ALL

如果你希望保留重复的行,可以使用 UNION ALL

本题详细解读

UNIONUNION ALL 的区别

  • UNION: 合并两个查询的结果集,并去除重复的行。这意味着如果两个查询返回的结果中有相同的行,UNION 只会保留其中的一行。
  • UNION ALL: 合并两个查询的结果集,但不会去除重复的行。这意味着如果两个查询返回的结果中有相同的行,UNION ALL 会保留所有相同的行。

注意事项

  1. 列数和数据类型必须匹配: 使用 UNIONUNION ALL 时,两个 SELECT 语句的列数必须相同,并且对应列的数据类型必须兼容。
  2. 性能考虑: UNION 由于需要去重,通常比 UNION ALL 更消耗资源。如果你确定结果集中不会有重复行,或者你希望保留重复行,使用 UNION ALL 会更高效。

示例解析

假设 employees 表中有以下数据:

name salary
Alice 50000
Bob 60000

contractors 表中有以下数据:

name salary
Alice 50000
Charlie 70000

使用 UNION 的结果将是:

name salary
Alice 50000
Bob 60000
Charlie 70000

使用 UNION ALL 的结果将是:

name salary
Alice 50000
Bob 60000
Alice 50000
Charlie 70000

在这个例子中,UNION 去除了重复的 Alice 行,而 UNION ALL 保留了所有行。

纠错
反馈