PostgreSQL - Unions(联合语句)

PostgreSQL - Unions(联合语句) 首页 / PostgreSQL入门教程 / PostgreSQL - Unions(联合语句)

PostgreSQL UNION 用于合并两个或多个SELECT语句的输出,而不返回任何重复的行。

要使用UNION,每个SELECT必须具有相同数量的选定列,相同数量的列表达式,相同数据类型,并且具有相同的顺序,但它们的长度不必相同。

链接:https://www.learnfk.comhttps://www.learnfk.com/postgresql/postgresql-unions-clause.html

来源:LearnFk无涯教程网

Unions - 语法

UNION 的基本语法如下:

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

UNION

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

在此,给定条件可以是根据您的要求的任何给定表达式。

Unions - 示例

考虑以下两个表,(a) COMPANY 表如下-

testdb=# SELECT * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Learnfk |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

(b)另一个表是 DEPARTMENT 如下-

testdb=# SELECT * from DEPARTMENT;
 id | dept        | emp_id
----+-------------+--------
  1 | IT Billing  |      1
  2 | Engineering |      2
  3 | Finance     |      7
  4 | Engineering |      3
  5 | Finance     |      4
  6 | Engineering |      5
  7 | Finance     |      6
(7 rows)

现在让无涯教程使用SELECT语句和UNION子句将这两个表连接起来,如下所示:

testdb=# 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;

这将产生以下输出-

 emp_id | name  |  dept
--------+-------+--------------
      5 | David | Engineering
      6 | Kim   | Finance
      2 | Learnfk | Engineering
      3 | Teddy | Engineering
      4 | Mark  | Finance
      1 | Paul  | IT Billing
      7 | James | Finance
(7 rows)

UNION ALL - 语句

UNION ALL运算符用于合并两个SELECT语句的输出,包括重复的行,适用于UNION的相同规则也适用于UNION ALL运算符。

UNION ALL 的基本语法如下-

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

UNION ALL

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

在此,给定条件可以是根据您的要求的任何给定表达式。

UNION ALL - 示例

现在,让无涯教程在SELECT语句中将上述两个表连接如下:

testdb=# 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;

这将产生以下输出-

 emp_id | name  | dept
--------+-------+--------------
      1 | Paul  | IT Billing
      2 | Learnfk | Engineering
      7 | James | Finance
      3 | Teddy | Engineering
      4 | Mark  | Finance
      5 | David | Engineering
      6 | Kim   | Finance
      1 | Paul  | IT Billing
      2 | Learnfk | Engineering
      7 | James | Finance
      3 | Teddy | Engineering
      4 | Mark  | Finance
      5 | David | Engineering
      6 | Kim   | Finance
(14 rows)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

推荐系统三十六式 -〔刑无刀〕

如何做好一场技术演讲 -〔极客时间〕

摄影入门课 -〔小麥〕

检索技术核心20讲 -〔陈东〕

Django快速开发实战 -〔吕召刚〕

物联网开发实战 -〔郭朝斌〕

PyTorch深度学习实战 -〔方远〕

全链路压测实战30讲 -〔高楼〕

大厂设计进阶实战课 -〔小乔〕

好记忆不如烂笔头。留下您的足迹吧 :)