当前位置:   article > 正文

PostgreSQL UNION 操作符

PostgreSQL UNION 操作符

PostgreSQL UNION 操作符

PostgreSQL UNION 操作符合并两个或多个 SELECT 语句的结果。
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
语法
UNIONS 基础语法如下:

SELECT column1 [, column2 ]
FROM table1 [, table2 ][WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ][WHERE condition]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里的条件语句可以根据您的需要设置任何表达式。
实例
创建 COMPANY 表,数据内容如下:

highgo=# select  * from  company ; 
 id | name | age |                       address                        | salary 
----+------+-----+------------------------------------------------------+--------
  1 | 张三 |  32 | 济南                                                 |  20000
  2 | 李四 |  25 | 青岛                                                 |  15000
  3 | 王五 |  23 | 北京                                                 |  20000
  4 | 赵六 |  25 | 上海                                                 |  65000
  5 | 小明 |  27 | 广州                                                 |  85000
  6 | 小红 |  22 | 深圳                                                 |  45000
  7 | 小强 |  24 | 成都                                                 |  10000
(7 行记录)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

创建 DEPARTMENT 表,数据内容如下:

highgo=# SELECT * from DEPARTMENT;
 id |                          dept                          | emp_id 
----+--------------------------------------------------------+--------
  1 | 技术支持                                               |      1
  2 | 研发                                                   |      2
  3 | 财务                                                   |      7
  4 | 研发                                                   |      3
  5 | 财务                                                   |      4
  6 | 研发                                                   |      5
  7 | 财务                                                   |      6
(7 行记录)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

现在,我们在 SELECT 语句中使用 UNION 子句将两张表连接起来,如下所示:

SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
   ON COMPANY.ID = DEPARTMENT.EMP_ID
   UNION
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
    ON COMPANY.ID = DEPARTMENT.EMP_ID;
  • 1
  • 2
  • 3
  • 4
  • 5

得到结果如下:

 emp_id | name |                          dept                          
--------+------+--------------------------------------------------------
      1 | 张三 | 技术支持                                              
      3 | 王五 | 研发                                                
      4 | 赵六 | 财务                                                
      7 | 小强 | 财务                                                
      2 | 李四 | 研发                                                
      6 | 小红 | 财务                                                
      5 | 小明 | 研发                                                
(7 行记录)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

UNION ALL 子句

UNION ALL 操作符可以连接两个有重复行的 SELECT 语句,默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
语法
UINON ALL 子句基础语法如下:

SELECT column1 [, column2 ]
FROM table1 [, table2 ][WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ][WHERE condition]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里的条件语句可以根据您的需要设置任何表达式。
实例
现在,让我们把上面提到的两张表用 SELECT 语句结合 UNION ALL 子句连接起来:

SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
   ON COMPANY.ID = DEPARTMENT.EMP_ID
   UNION ALL
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
    ON COMPANY.ID = DEPARTMENT.EMP_ID;
  • 1
  • 2
  • 3
  • 4
  • 5

得到结果如下:

 emp_id | name |                          dept                          
--------+------+--------------------------------------------------------
      1 | 张三 | 技术支持                                              
      2 | 李四 | 研发                                                
      7 | 小强 | 财务                                                
      3 | 王五 | 研发                                                
      4 | 赵六 | 财务                                                
      5 | 小明 | 研发                                                
      6 | 小红 | 财务                                                
      1 | 张三 | 技术支持                                              
      2 | 李四 | 研发                                                
      7 | 小强 | 财务                                                
      3 | 王五 | 研发                                                
      4 | 赵六 | 财务                                                
      5 | 小明 | 研发                                                
      6 | 小红 | 财务                                                
(14 行记录)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/441368
推荐阅读
相关标签
  

闽ICP备14008679号