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运算符的工作方式: 
 
 
 
带有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 表不存在。
 
 
 
  top_rated_cars 表包含各种列,例如 Car_name,launch_year 列。
 
 
  
  
CREATE TABLE top_rated_cars(
  Car_name VARCHAR NOT null,
  launch_year SMALLINT
);
 
   
  
  输出 
 
 在执行上述命令时,我们将得到以下消息: top_rated_cars 表具有已成功创建到 Organization 数据库中。
 
 
 
  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 表。
 
 
 
 要创建将 most_reliable_cars 放入组织数据库,我们使用 CREATE 命令。
 
 但是,在创建 most_reliable_cars之前表,如果 Organization 数据库中已经存在类似的表,我们将使用 DROP TABLE 命令。
 
 
  
  
DROP TABLE if EXISTS most_reliable_cars;
 
   
  
  输出 
 
 执行上述命令后,我们将获得以下窗口消息: most_reliable_cars 表不存在。
 
 
 
 表 most_reliable_cars 包含各种列,例如 Car_name,launch_year 列。
 
 
  
  
CREATE TABLE most_reliable_cars (
  Car_name VARCHAR NOT null,
  launch_year SMALLINT
);
 
   
  
  输出 
 
 在执行上述命令时,我们将得到以下消息,该消息显示 most_reliable_cars >表已成功创建到 Organization 数据库中。
 
 
 
 成功创建 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 表。
 
 
 
 我们正在使用如果要查看 top_rated_cars 表中的数据,请在下面的命令中输入> SELECT 命令。
 
 
  
  
SELECT * FROM top_rated_cars;
 
   
  
  输出 
 
 执行上述命令后,我们将得到以下结果: 
 
 
 
 以下语句返回 most_reliable_cars 表中的数据: 
 
 
  
  
SELECT * FROM most_reliable_cars;
 
   
  
  输出 
 
 在执行上述命令时,我们将获得以下输出: 
 
 
 
 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 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;
 
   
  
  输出 
 
 执行上述命令后,我们将获得以下输出,其中保留了匹配的行。
 
 
 
带有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,显示两个表中的所有数据。
 
 
 
 
 注意: 如果我们在每个命令的末尾使用ORDER BY子句,则合并的输出将不会按我们期望的那样排序。 
 
 由于UNION运算符合并了所有命令的排序结果集,因此不能保证最终输出中行的顺序。
 
概述
 
 在PostgreSQL UNION部分中,我们学习了以下主题: 
 
我们已使用 PostgreSQL UNION和UNION ALL 将各种命令的输出合并为一个输出。 
我们还使用了 PostgreSQL UNION ALL with ORDER By 子句对命令输出进行排序。