PostgreSQL UNION 操作符


PostgreSQL UNION 操作符

简介

UNION 操作符是 PostgreSQL 中的一组关联操作符,它用于合并多个 SELECT 语句的结果集。它将多个 SELECT 语句的结果集进行去重并合并后,生成一个结果集。

语法

SELECT column1, column2, 
FROM table1
UNION
SELECT column1, column2, 
FROM table2
UNION

SELECT column1, column2, 
FROM tableN;

参数

  • column1, column2, … : 要从 SELECT 语句检索的列
  • table1, table2, … : 从中检索数据的表名或视图

使用 UNION 操作符

以下是使用 UNION 操作符的一些例子:

例1:

SELECT column1, column2, 
FROM table1
UNION
SELECT column1, column2, 
FROM table2;

本例中使用 UNION 操作符合并了两个 SELECT 语句,结果集去重并合并后生成一个结果集。

例2:

SELECT 'table1' as table_name, column1, column2, 
FROM table1
UNION
SELECT 'table2' as table_name, column1, column2, 
FROM table2;

本例中使用 UNION 操作符合并了两个 SELECT 语句,并在结果集中添加了一个“table_name”列,该列的值指定了该行数据来自哪个表。

UNION 与 UNION ALL

UNION 和 UNION ALL 都可以用于合并多个 SELECT 语句的结果集。它们区别在于:

  • UNION 会删除重复的行,而 UNION ALL 不会删除重复的行。
  • UNION 是按列类型逐个比较的,而 UNION ALL 只需要匹配列在所有结果集中的位置即可。

以下是 UNION 操作符和 UNION ALL 操作符的一些例子:

例3:

SELECT column1, column2, 
FROM table1
UNION
SELECT column1, column2, 
FROM table2;

本例中使用 UNION 操作符合并了两个 SELECT 语句,结果集去重并合并后生成一个结果集。

例4:

SELECT column1, column2, 
FROM table1
UNION ALL
SELECT column1, column2, 
FROM table2;

本例中使用 UNION ALL 操作符合并了两个 SELECT 语句,结果集合并后包含所有重复的行。

注意事项

  • UNION 操作符的运行效率较低,因为它需要对结果集进行排序和去重操作。如果您确定结果集没有重复的行,则使用 UNION ALL 操作符可以获得更好的性能。
  • UNION 操作符需要确保每个 SELECT 语句中列的数量、类型和顺序相同。如果列的数量、类型或顺序不同,则会输出错误信息。
  • UNION 操作符的结果集的列名称来自第一个 SELECT 语句。

结论

UNION 操作符是 PostgreSQL 中的一组关联操作符,它用于合并多个 SELECT 语句的结果集,去除重复并生成一个结果集。我们可以使用 UNION 和 UNION ALL 操作符合并多个 SELECT 语句的结果集。使用 UNION 操作符的运行效率较低,所以在确定没有重复行的情况下,可以使用 UNION ALL 操作符获取更好的性能。但请注意,Union操作符必须确保每个SELECT语句中的列的数量、类型和顺序相同,否则会输出错误信息。