PostgreSQL – 联合运算符
PostgreSQL UNION运算符用于将多个查询的结果集合并为一个结果集。它用于将两个或多个 SELECT 语句的结果集合并为一个结果集。
Syntax:
SELECT
column_1,
column_2
FROM
table_name_1
UNION
SELECT
column_1,
column_2
FROM
table_name_2;
使用 UNION运算符时需要遵循以下规则:
- 两个查询必须返回相同数量的列。
- 查询中的相应列必须具有兼容的数据类型。
注意: UNION运算符从查询集中删除所有重复的行。
让我们通过在示例数据库(例如 sales2020)中设置两个示例表来查看 UNION运算符的一些示例。假设表“sales2020q1”代表特定产品在 2020 年第一季度的销售额,“sales2020q2”代表同年第二季度的销售额。现在让我们按照以下步骤设置数据库:
- 使用以下命令创建 sales2020 数据库:
CREATE DATABASE sales2020;
- 现在使用以下命令向 sales2020 数据库添加两个表,即 sales2020q1 和 sales2020q2:
CREATE TABLE sales2020q1( id SERIAL, name VARCHAR(50) NOT NULL, amount VARCHAR(50), PRIMARY KEY (id) ); CREATE TABLE sales2020q2( id SERIAL, name VARCHAR(50) NOT NULL, amount VARCHAR(50), PRIMARY KEY (id) );
- 使用以下命令将数据插入表中:
INSERT INTO sales2020q1(name, amount) VALUES ('Raju Kumar', '121232'), ('Nikhil Aggarwal', '254789'), ('Abhishek Kelenia', '365487'); INSERT INTO sales2020q2(name, amount) VALUES ('Raju Kumar', '457264'), ('Nikhil Aggarwal', '365241'), ('Abhishek Kelenia', '759864');
现在我们的示例数据库已准备就绪。让我们在几个示例中实现 UNION运算符。
示例 1:
在这里,我们将使用 UNION运算符来合并来自 sales2020q1 和 salese2020q2 表的数据。
SELECT *
FROM
sales2020q1
UNION
SELECT *
FROM
sales2020q2;
输出:
示例 2:
在这里,我们将在合并 sales2020q1 和 salese2020q2 表的数据后,使用 ORDER BY 子句对 UNION运算符返回的合并结果按“id”的顺序进行排序。
SELECT *
FROM
sales2020q1
UNION ALL
SELECT *
FROM
sales2020q2
ORDER BY
name ASC,
amount DESC;
输出: