📜  PostgreSQL – 联合运算符

📅  最后修改于: 2022-05-13 01:57:15.605000             🧑  作者: Mango

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;

输出: