开发手册 欢迎您!
软件开发者资料库

PostgreSQL - UNIONS条款

PostgreSQL UNIONS条款 - 从基本到高级概念的简单简单步骤学习PostgreSQL,包括数据库编程,概述,环境设置,语法,数据类型,创建,选择,删除数据库,删除,创建表,架构,插入,选择,更新,删除查询,运算符,表达式,位置,类似,限制,排序依据,分组依据,使用,具有子句,AND和OR运算符,不同的关键字,约束,联接,联合子句,NULL值,别名语法,触发器,索引,更改表命令,截断表命令,视图,事务,锁,子查询,自动增量,权限,日期/时间函数和操作符,函数,有用函数,C / C ++,JAVA,PHP,Perl,Python接口。

PostgreSQL UNION 子句/运算符用于组合两个或多个SELECT语句的结果,而不返回任何重复的行.

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

语法

UNION 的基本语法如下 :

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

此处,给定条件可以是基于您的要求的任何给定表达式.

示例

考虑以下两个表,(a)公司表格如下 :

testdb=# SELECT * from COMPANY; id | name  | age | address   | salary----+-------+-----+-----------+--------  1 | Paul  |  32 | California|  20000  2 | Allen |  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 | Allen | 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条件]  UNION ALL  SELECT column1 [,column2]  FROM table1 [,table2]  [WHERE condition]

此处,给定条件可以是基于您的要求的任何给定表达式.

示例

现在,让我们在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 JOINMENT  ON COMPANY.ID = DEPARTMENT.EMP_ID;

这会产生以下结果 :

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