现在位置:首页 > 数据库 > PostgreSQL > PostgreSQL UNIONS子句

PostgreSQL UNIONS子句

来源:原创文章    由 易百 更新版本    浏览:人次

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

直接使用UNION,每个SELECT选择的列数必须具有相同的,相同数目的列表达式相同的数据类型,并让它们在相同的顺序,但它们不必是相同的长度。

www.yiibai.com

语法:

UNION的基本语法如下: yiibai.com

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

UNION

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

yiibai.com

这里给定的条件可以是根据需要的任何表达式。

www.yiibai.com

例子:

考虑以下两个表:COMPANY 表如下:

yiibai.com

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)
 
yiibai.com

另一表是DEPARTMENT 如下: www.yiibai.com

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)
 
yiibai.com

现在,让我们加入这两个表使用SELECT语句连同UNION子句如下: www.yiibai.com

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; yiibai.com 

This would produce following result:

yiibai.com

 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)
 yiibai.com 

UNION ALL 子句:

UNION ALL运算符是用来结合两个SELECT语句,包括重复行的结果。联盟适用同样的规则适用于UNION ALL运算符。 www.yiibai.com

语法:

UNION ALL的基本语法如下:

www.yiibai.com

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

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition] www.yiibai.com 

这里给定的条件可以是任何表达式,根据需要。

www.yiibai.com

例子:

现在,让我们携手上述两个表中的SELECT语句如下: www.yiibai.com

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; www.yiibai.com 

这将产生以下结果: yiibai.com

 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) www.yiibai.com 
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,传播学习教程;
转载请注明:文章转载自:易百教程 [http://www.yiibai.com]
本文标题:PostgreSQL UNIONS子句
转载请保留原文链接:http://www.yiibai.com/html/postgresql/2013/080670.html
上一篇:PostgreSQL JOINS子句      下一篇:PostgreSQL NULL值