postgresql数据库-PostgreSQL UNIONS子句

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

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

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

语法:

UNION的基本语法如下:

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

这里根据您的要求给出的条件表达式。

示例:
考虑以下两个表,COMPANY表如下:

yiibai_db=# 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) 

另一张表是DEPARTMENT如下:

yiibai_db=# 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子句连接这两个表,如下所示:

yiibai_db=# 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 condition]  UNION ALL  SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] 

这里根据您的要求给出的条件表达式。

示例:
现在,我们在SELECT语句中加入上面提到的两个表,如下所示:

yiibai_db=# 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 | 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) 

  

上一篇: PostgreSQL日期和时间函数 下一篇: PostgreSQL NULL值

加QQ群啦,易百教程官方技术学习群

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 postgresql数据库/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/11/16/postgresql数据库-postgresql-unions子句-2/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注