PostgreSQL Union、Union ALL 示例

什么是 PostgreSQL 联盟?

这个 PostgreSQL UNION 运算符用于将来自多个 SELECT 语句的结果集合并为一个结果集。SELECT 语句结果中的任何重复行都将被删除。UNION 运算符在两种条件下起作用:

  • SELECT 查询必须返回相似数量的查询。
  • 所有对应列的数据类型必须兼容。

UNION 运算符通常用于合并尚未完全规范化的相关表中的数据。

句法

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

下面对上述参数做一下解释:

expression_1、expression_2、…expression_n 是您需要检索的计算或列。

这些表是您需要从中检索记录的表。

WHERE 条件是检索记录必须满足的条件。

注意:由于 UNION 运算符不返回重复项,因此使用 UNION DISTINCT 不会对结果产生影响。

PostgreSQL 工会

UNION 运算符可删除重复项。让我们演示一下。

我们有一个名为 Demo 的数据库,其中包含以下表:

书:

PostgreSQL 工会

价格:

PostgreSQL 工会

让我们运行以下命令:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

该命令将返回以下内容:

PostgreSQL 工会

id 列出现在 Book 和 Price 表中。但是,它在结果中只出现一次。原因是 PostgreSQL UNION 运算符不返回重复项。

PostgreSQL 联合所有

此运算符组合来自多个 SELECT 语句的结果集而不删除重复项。该运算符要求每个 SELECT 语句在相似数据类型的结果集中具有相似数量的字段。

语法:

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

下面对上述参数做一下解释:

expression_1、expression_2、…expression_n 是您需要检索的计算或列。

这些表是您需要从中检索记录的表。

WHERE 条件是检索记录必须满足的条件。

注意:两个表达式必须具有相同数量的表达式。

我们将使用下表:

书:

PostgreSQL 联合所有

价格:

PostgreSQL 联合所有

运行以下命令:

 
SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

它应该返回以下内容:

PostgreSQL 联合所有

重复项尚未被删除。

ORDER BY

这个 PostgreSQL UNION 运算符可以与 ORDER BY 子句一起使用来对查询结果进行排序。为了演示这一点,我们将使用下表:

价格:

ORDER BY

价格2:

ORDER BY

以下命令演示如何将 UNION 运算符与 ORDER BY 子句一起使用:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

该命令将返回以下内容:

ORDER BY

记录按价格列排序。该子句默认按升序排列记录。要按降序排列,请添加 DESC 子句,如下所示:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

该命令将返回以下内容:

ORDER BY

记录已根据价格列按降序排列。

何时使用 Union 以及何时使用 Union all?

当您有多个结构相似但因某种原因而拆分的表时,请使用 UNION 运算符。当您需要删除/消除重复记录时,它很有用。

当您不需要删除/消除重复记录时,请使用 UNION ALL 运算符。

使用 pgAdmin

现在让我们看看如何使用 pgAdmin 执行这三个操作。

使用方法 PostgreSQL 使用 pgAdmin 进行合并

以下是如何使用的分步过程 PostgreSQL 使用 pgAdmin 进行合并

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 注册
登录您的 pgAdmin 帐户。

步骤2) 点击数据库

  1. 从左侧导航栏中单击数据库。
  2. 单击“演示”。

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 进行合并

步骤3) 键入查询
在查询编辑器中输入查询:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

步骤4) 单击执行按钮。
接下来,单击执行按钮。如下图所示。

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 进行合并

它应该返回以下内容:

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 进行合并

联合所有

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 在左侧的导航栏中,单击数据库。
  2. 单击“演示”。

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 合并所有

步骤3) 在查询编辑器中输入查询:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

步骤4) 单击执行按钮。

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 合并所有

它应该返回以下内容:

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 合并所有

ORDER BY

UNION ALL 运算符可以与 ORDER BY 子句结合使用,对结果集中的结果进行排序。例如:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

该命令将返回以下内容:

使用 VHDL 语言编写 PostgreSQL 使用 pgAdmin 进行排序

结果已排序。

结语

  • 这个 PostgreSQL UNION 运算符将多个结果组合在一起 选择语句 合并到一个结果集中。
  • UNION 运算符不会返回重复的记录。
  • 要对结果进行排序,请将其与 ORDER BY 子句结合。
  • UNION ALL 运算符将来自多个 SELECT 语句的结果合并为一个结果集。
  • UNION ALL 运算符不会删除重复项。

下载本教程使用的数据库