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 的数据库,其中包含以下表:
书:
价格:
让我们运行以下命令:
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 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 进行合并
要通过 pgAdmin 完成相同操作,请执行以下操作:
步骤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;
该命令将返回以下内容:
结果已排序。
结语
- 这个 PostgreSQL UNION 运算符将多个结果组合在一起 选择语句 合并到一个结果集中。
- UNION 运算符不会返回重复的记录。
- 要对结果进行排序,请将其与 ORDER BY 子句结合。
- UNION ALL 运算符将来自多个 SELECT 语句的结果合并为一个结果集。
- UNION ALL 运算符不会删除重复项。