PostgreSQL 教程
1. PostgreSQL 教程 2. Linux 上安装 PostgreSQL 3. Windows 上安装 PostgreSQL 4. Mac OS 上安装 PostgreSQL 5. PostgreSQL 语法 6. PostgreSQL 数据类型 7. PostgreSQL 创建数据库 8. PostgreSQL 选择数据库 9. PostgreSQL 删除数据库 10. PostgreSQL 创建表格 11. PostgreSQL 删除表格 12. PostgreSQL 模式(SCHEMA) 13. PostgreSQL INSERT INTO 语句 14. PostgreSQL SELECT 语句 15. PostgreSQL 运算符 16. PostgreSQL 表达式 17. PostgreSQL WHERE 子句 18. PostgreSQL AND & OR 运算符 19. PostgreSQL UPDATE 语句 20. PostgreSQL DELETE 语句 21. PostgreSQL LIKE 子句 22. PostgreSQL LIMIT 子句 23. PostgreSQL ORDER BY 语句 24. PostgreSQL GROUP BY 语句 25. PostgreSQL WITH 子句 26. PostgreSQL HAVING 子句 27. PostgreSQL DISTINCT 关键字 28. PostgreSQL 约束 29. PostgreSQL 连接(JOIN) 30. PostgreSQL UNION 操作符 31. PostgreSQL NULL 值 32. PostgreSQL 别名 33. PostgreSQL 触发器 34. PostgreSQL 索引 35. PostgreSQL ALTER TABLE 命令 36. PostgreSQL TRUNCATE TABLE 37. PostgreSQL View(视图) 38. PostgreSQL TRANSACTION(事务) 39. PostgreSQL LOCK(锁) 40. PostgreSQL 子查询 41. PostgreSQL AUTO INCREMENT(自动增长) 42. PostgreSQL PRIVILEGES(权限) 43. PostgreSQL 时间/日期函数和操作符 44. PostgreSQL 常用函数

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]

这里的条件语句可以根据您的需要设置任何表达式。

实例

创建 COMPANY 表(下载 COMPANY SQL 文件 ),数据内容如下:

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 表(下载 DEPARTMENT SQL 文件 ),数据内容如下:


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 子句将两张表连接起来,如下所示:

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。

语法

UINON ALL 子句基础语法如下:

SELECT column1 [, column2 ]

FROM table1 [, table2 ]

[WHERE condition]



UNION ALL



SELECT column1 [, column2 ]

FROM table1 [, table2 ]

[WHERE condition]

这里的条件语句可以根据您的需要设置任何表达式。

实例

现在,让我们把上面提到的两张表用 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;

得到结果如下:

 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)