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 运算符会删除重复项,其方式与以下方式相同: 选择DISTINCT 确实如此。让我们来演示一下。我们有一个名为 Demo 的数据库,其中包含以下表格:
书:
价格:
让我们运行以下命令:
SELECT id FROM Book UNION SELECT id FROM Price;
该命令将返回以下内容:
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 条件是检索记录必须满足的条件。
注意: 两个 SELECT 语句必须包含相同数量的表达式。
我们将使用下表:
书:
价格:
运行以下命令:
SELECT id FROM Book UNION ALL SELECT id FROM price;
它应该返回以下内容:
重复项尚未被删除。
ORDER BY
此 PostgreSQL UNION 运算符可以与 ORDER BY 子句一起使用来对查询结果进行排序。为了演示这一点,我们将使用下表:
价格:
价格2:
以下命令演示如何将 UNION 运算符与 ORDER BY 子句一起使用:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price;
该命令将返回以下内容:
记录按价格列排序。该子句默认按升序排列记录。要按降序排列,请添加 DESC 子句,如下所示:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
该命令将返回以下内容:
记录已根据价格列按降序排列。
何时使用 Union,何时使用 Union All?
当您有多个结构相似但由于某种原因被拆分的表时,可以使用 UNION 运算符。当您需要删除或消除重复记录时,它非常有用。
当您不需要删除或消除重复记录时,请使用 UNION ALL 运算符。
使用 pgAdmin
现在让我们看看如何使用pgAdmin来执行这三个操作。
使用方法 PostgreSQL 使用 pgAdmin 进行合并
以下是使用方法的详细步骤 PostgreSQL 通过 pgAdmin 进行 UNION 操作:
步骤1) 登录您的 pgAdmin 帐户。
步骤2) 从左侧导航栏中,单击“数据库”,然后单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
步骤4) 单击执行按钮。
它应该返回以下内容:
联合所有
步骤1) 登录您的 pgAdmin 帐户。
步骤2) 从左侧导航栏中,单击“数据库”,然后单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT id FROM Book UNION ALL SELECT id FROM price;
步骤4) 单击执行按钮。
它应该返回以下内容:
ORDER BY
UNION ALL 运算符可以与 ORDER BY 子句结合使用,对结果集中的结果进行排序。例如:
SELECT id FROM Book UNION ALL SELECT id FROM price ORDER BY id;
该命令将返回以下内容:
结果已排序。


















