PostgreSQL教程

PostgreSQL UNION

在本节中,我们将了解 PostgreSQL UNION运算符的工作原理,该运算符用于合并各种输出
和 PostgreSQL联合命令的示例与PostgreSQL 全部一起使用按子句排序。

什么是PostgreSQL UNION运算符?

在 PostgreSQL ,UNION运算符将一个或多个SELECT命令组合到单个输出中。

PostgreSQL联合运算符的语法

PostgreSQL联合运算符的语法如下,这有助于我们将两个命令的输出关联起来:
SELECT select_list_1
FROM table_expresssion_1
UNION
SELECT select_list_2
FROM table_expression_2
如果要在UNION运算符的帮助下合并两个命令的输出,则这些命令必须遵循以下指令:
指定的数据类型必须兼容。 这两个命令的列顺序和选择列表中的数字必须相似。
注意: UNION运算符还用于从组合数据集中删除所有匹配的行。我们可以使用UNION ALL代替UNION来收集重复的行。
在下图中,我们可以了解 UNION运算符的工作方式:
PostgreSQL联合

带有ORDER BY子句的PostgreSQL UNION

如上所知, UNION运算符可以放置初始命令输出的行在附加命令输出的行之前,之后或之间。
我们可以使用,以对最终输出中的行进行排序。
UNION
为了定期了解 PostgreSQL Union运算符的工作原理,我们首先使用带有操作符的示例表来合并样本表中的数据。
以下命令的帮助:
在以下命令中,我们将创建两个表为 top_rated_cars 在 CREATE 命令的帮助下找到 most_reliable_cars ,并使用 INSERT 命令。
要将 top_rated_cars 创建到组织数据库中,我们使用创建
但是,在创建 top_rated_cars 表之前,我们将使用 DROP TABLE 命令(如果 Organization 数据库中已经存在类似的表)。
DROP TABLE if EXISTS top_rated_cars;
输出
执行上述命令后,我们将获得以下窗口消息: top_rated_cars 表不存在。
PostgreSQL联合
top_rated_cars 表包含各种列,例如 Car_name,launch_year 列。
CREATE TABLE top_rated_cars(
  Car_name VARCHAR NOT null,
  launch_year SMALLINT
);
输出
在执行上述命令时,我们将得到以下消息: top_rated_cars 表具有已成功创建到 Organization 数据库中。
PostgreSQL联合
top_rated_cars 表成功后,我们将在 INSERT 命令的帮助下向其中输入一些值。
INSERT INTO 
  top_rated_cars(Car_name,launch_year)
VALUES
   ('Chevrolet Silveradon',2020),
   ('Nissan Rogue',2020),
   ('Mercedes-Benz GLB',2019);
输出
执行上述命令后,我们将获得以下消息窗口: 三个值已成功插入到 top_rated_cars 表。
PostgreSQL联合
要创建将 most_reliable_cars 放入组织数据库,我们使用 CREATE 命令。
但是,在创建 most_reliable_cars之前表,如果 Organization 数据库中已经存在类似的表,我们将使用 DROP TABLE 命令。
DROP TABLE if EXISTS most_reliable_cars;
输出
执行上述命令后,我们将获得以下窗口消息: most_reliable_cars 表不存在。
PostgreSQL联合
表 most_reliable_cars 包含各种列,例如 Car_name,launch_year 列。
CREATE TABLE most_reliable_cars (
  Car_name VARCHAR NOT null,
  launch_year SMALLINT
);
输出
在执行上述命令时,我们将得到以下消息,该消息显示 most_reliable_cars >表已成功创建到 Organization 数据库中。
PostgreSQL Union
成功创建 most_reliable_cars 表后,我们将在 INSERT 命令的帮助下向其中输入一些值。
INSERT INTO 
  most_reliable_cars(Car_name,launch_year)
VALUES
   ('Toyota Prius Prime',2020),
   ('Nissan Rogue',2020),
   ('Kia Forte',2019);
输出
执行上述命令后,我们将获得以下消息窗口,其中显示三个值已成功插入进入 most_reliable_cars 表。
PostgreSQL联合
我们正在使用如果要查看 top_rated_cars 表中的数据,请在下面的命令中输入> SELECT 命令。
SELECT * FROM top_rated_cars;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Union
以下语句返回 most_reliable_cars 表中的数据:
SELECT * FROM most_reliable_cars;
输出
在执行上述命令时,我们将获得以下输出:
PostgreSQL Union

PostgreSQL UNION的示例

让我们看一个示例示例,以了解 PostgreSQL Union 的工作原理

简单PostgreSQL UNION示例

UNION运算符用于消除匹配的行。
在以下示例中,我们使用 UNION运算符合并两个表( top_rated_cars 和 most_reliable_cars )。
SELECT * FROM top_rated_cars
UNION
SELECT * FROM most_reliable_cars;
输出
执行上述命令后,我们将获得以下输出,其中包含五行,因为 UNION运算符消除了一条匹配的行。
PostgreSQL联合

PostgreSQL UNION ALL

UNION ALL 运算符可合并多个 SELECT 命令的输出,而不会消除重复的行。
UNION ALL运算符涉及每个 SELECT命令,以在相同数据类型的输出中具有相等数量的字段。

PostgreSQL UNION ALL的语法

PostgreSQL UNION ALL的语法如下:
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 这些是我们要检索的计算或列。
表格 table参数用于从各种表中检索记录。
条件如何 这些是要保存值所必须满足的条件。
注意: 在以上语法中,两个表达式必须具有相等数量的表达式。

PostgreSQL UNION ALL的示例

在下面的示例中,我们将使用 UNION ALL 运算符将 top_rated_cars 和 most_reliable_cars 表的输出。
SELECT * FROM top_rated_cars
UNION ALL
SELECT * FROM most_reliable_cars;
输出
执行上述命令后,我们将获得以下输出,其中保留了匹配的行。
PostgreSQL Union

带有ORDER BY子句的PostgreSQL UNION ALL

PostgreSQL UNION 运算符可以与ORDER BY子句一起使用以对命令输出进行排序。
带有ORDER BY子句的PostgreSQL UNION ALL示例
在以下命令中,我们使用带有ORDER子句的 PostgreSQL UNION ALL 对输出进行排序,该输出由UNION运算符返回。
我们在最后一个末尾使用ORDER BY子句命令,如下例所示:
SELECT * FROM top_rated_cars
UNION ALL
SELECT * FROM most_reliable_cars
ORDER BY Car_name;
输出
执行上述命令后,我们将获得以下结果ult,显示两个表中的所有数据。
PostgreSQL联合
注意: 如果我们在每个命令的末尾使用ORDER BY子句,则合并的输出将不会按我们期望的那样排序。
由于UNION运算符合并了所有命令的排序结果集,因此不能保证最终输出中行的顺序。

概述

在PostgreSQL UNION部分中,我们学习了以下主题:
我们已使用 PostgreSQL UNION和UNION ALL 将各种命令的输出合并为一个输出。 我们还使用了 PostgreSQL UNION ALL with ORDER By 子句对命令输出进行排序。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4