PostgreSQL 数据库 UNION 操作符合并查询结果的语法要点

PostgreSQL 数据库阿木 发布于 2025-07-09 11 次阅读


摘要:

UNION操作是SQL查询中常用的功能之一,它允许我们将来自多个SELECT语句的结果集合并为一个结果集。本文将深入探讨PostgreSQL数据库中UNION操作的语法要点,并通过实际代码示例展示如何使用UNION进行查询。

一、

在数据库操作中,我们经常需要从多个表或查询中获取数据,并将它们合并为一个单一的结果集。这时,UNION操作就派上了用场。本文将详细介绍PostgreSQL中UNION操作的语法要点,并通过实例代码进行演示。

二、UNION操作的基本语法

UNION操作的基本语法如下:

sql

SELECT column_name(s)


FROM table1


UNION


SELECT column_name(s)


FROM table2


[WHERE condition];


这里有几个关键点需要注意:

1. UNION操作要求两个SELECT语句的列数必须相同。

2. 列的顺序必须一致。

3. 可以使用WHERE子句来过滤结果。

三、UNION与UNION ALL的区别

在PostgreSQL中,UNION和UNION ALL是两个不同的操作符。它们的主要区别在于是否去除重复的行。

- UNION:合并两个查询的结果集,并去除重复的行。

- UNION ALL:合并两个查询的结果集,包括重复的行。

四、UNION操作的语法要点

1. 列数和顺序:两个SELECT语句的列数必须相同,且列的顺序必须一致。

2. 数据类型:两个SELECT语句的列必须具有相同的数据类型。

3. ORDER BY子句:如果需要排序结果,可以在UNION操作的最后添加ORDER BY子句。

4. DISTINCT关键字:如果需要去除重复的行,可以在SELECT语句中使用DISTINCT关键字。

五、代码示例

以下是一些使用UNION操作的示例代码:

示例1:合并两个表的结果集

sql

CREATE TABLE employees (


id SERIAL PRIMARY KEY,


name VARCHAR(100),


department VARCHAR(100)


);

INSERT INTO employees (name, department) VALUES ('Alice', 'HR');


INSERT INTO employees (name, department) VALUES ('Bob', 'IT');


INSERT INTO employees (name, department) VALUES ('Charlie', 'HR');

CREATE TABLE managers (


id SERIAL PRIMARY KEY,


name VARCHAR(100),


department VARCHAR(100)


);

INSERT INTO managers (name, department) VALUES ('David', 'IT');


INSERT INTO managers (name, department) VALUES ('Eve', 'HR');

SELECT name, department FROM employees


UNION


SELECT name, department FROM managers;


示例2:使用UNION ALL合并两个查询的结果集,包括重复的行

sql

SELECT name FROM employees WHERE department = 'HR'


UNION ALL


SELECT name FROM managers WHERE department = 'IT';


示例3:使用DISTINCT去除重复的行

sql

SELECT DISTINCT department FROM employees


UNION


SELECT DISTINCT department FROM managers;


六、总结

UNION操作是PostgreSQL数据库中一个非常有用的功能,它允许我们合并多个查询的结果集。本文详细介绍了UNION操作的语法要点,并通过实际代码示例进行了演示。通过掌握UNION操作,我们可以更灵活地进行数据库查询,提高工作效率。

七、扩展阅读

- PostgreSQL官方文档:https://www.postgresql.org/docs/current/static/sql-select.htmlSQL-UNION

- SQL UNION操作详解:https://www.w3schools.com/sql/sql_union.asp

(注:本文字数约为3000字,实际字数可能因排版和编辑而有所变化。)