当前位置:   article > 正文

PgSQL——学习笔记12:UNION 操作符 & UNION ALL 操作符_pgsql union all

pgsql union all

目录

UNION 操作符:合并两个或多个 SELECT 语句的结果

UNION ALL 操作符:可以连接两个有重复行的 SELECT 语句


UNION 操作符:合并两个或多个 SELECT 语句的结果

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意:

  • UNION 内部的每个 SELECT 语句必须拥有相同数量的列
  • 另外,每个 SELECT 语句中的列也必须拥有相似的数据类型
  • 同时,每个 SELECT 语句中的列的顺序必须相同
  1. /*UNIONS 基础语法如下:*/
  2. /*这里的条件语句可以根据您的需要设置任何表达式。*/
  3. SELECT column1 [, column2 ]
  4. FROM table1 [, table2 ]
  5. [WHERE condition]
  6. UNION
  7. SELECT column1 [, column2 ]
  8. FROM table1 [, table2 ]
  9. [WHERE condition]

实例:

  1. mydb=# delete from department where id = 4;
  2. DELETE 1
  3. mydb=# select * from department;
  4. id | dept | emp_id
  5. ----+----------------------------------------------------+--------
  6. 1 | IT Billing | 1
  7. 2 | Engineering | 2
  8. 3 | Finance | 7
  9. (3 行记录)
  10. mydb=# INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (4,'Engineering',3),(5,'Finance',4),(6,'Engineering',5),(7,'Finance',6);
  11. INSERT 0 4
  12. mydb=# select * from department;
  13. id | dept | emp_id
  14. ----+----------------------------------------------------+--------
  15. 1 | IT Billing | 1
  16. 2 | Engineering | 2
  17. 3 | Finance | 7
  18. 4 | Engineering | 3
  19. 5 | Finance | 4
  20. 6 | Engineering | 5
  21. 7 | Finance | 6
  22. (7 行记录)
  23. mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
  24. mydb-# ON COMPANY.ID = DEPARTMENT.EMP_ID;
  25. emp_id | name | dept
  26. --------+-------+----------------------------------------------------
  27. 1 | Paul | IT Billing
  28. 2 | Allen | Engineering
  29. 7 | James | Finance
  30. 3 | Teddy | Engineering
  31. 4 | Mark | Finance
  32. 5 | David | Engineering
  33. 6 | Kim | Finance
  34. (7 行记录)
  35. mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
  36. mydb-# ON COMPANY.ID = DEPARTMENT.EMP_ID;
  37. emp_id | name | dept
  38. --------+-------+----------------------------------------------------
  39. 1 | Paul | IT Billing
  40. 2 | Allen | Engineering
  41. 7 | James | Finance
  42. 3 | Teddy | Engineering
  43. 4 | Mark | Finance
  44. 5 | David | Engineering
  45. 6 | Kim | Finance
  46. | James |
  47. | Paul |
  48. | James |
  49. (10 行记录)
  50. /*在 SELECT 语句中使用 UNION 子句将两张表连接起来,如下所示:*/
  51. mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
  52. mydb-# ON COMPANY.ID = DEPARTMENT.EMP_ID
  53. mydb-# UNION
  54. mydb-# SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
  55. mydb-# ON COMPANY.ID = DEPARTMENT.EMP_ID;
  56. emp_id | name | dept
  57. --------+-------+----------------------------------------------------
  58. 2 | Allen | Engineering
  59. | Paul |
  60. 6 | Kim | Finance
  61. 1 | Paul | IT Billing
  62. 5 | David | Engineering
  63. 4 | Mark | Finance
  64. 3 | Teddy | Engineering
  65. | James |
  66. 7 | James | Finance
  67. (9 行记录)

UNION ALL 操作符:可以连接两个有重复行的 SELECT 语句

UNION ALL 操作符可以连接两个有重复行的 SELECT 语句,

默认地,UNION 操作符选取不同的值。

如果允许重复的值,请使用 UNION ALL。

  1. /*UINON ALL 子句基础语法如下:*/
  2. /*这里的条件语句可以根据您的需要设置任何表达式。*/
  3. SELECT column1 [, column2 ]
  4. FROM table1 [, table2 ]
  5. [WHERE condition]
  6. UNION ALL
  7. SELECT column1 [, column2 ]
  8. FROM table1 [, table2 ]
  9. [WHERE condition]

 实例:

  1. /*把上面提到的两张表用 SELECT 语句结合 UNION ALL 子句连接起来:*/
  2. mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
  3. mydb-# ON COMPANY.ID = DEPARTMENT.EMP_ID
  4. mydb-# UNION ALL
  5. mydb-# SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
  6. mydb-# ON COMPANY.ID = DEPARTMENT.EMP_ID;
  7. emp_id | name | dept
  8. --------+-------+----------------------------------------------------
  9. 1 | Paul | IT Billing
  10. 2 | Allen | Engineering
  11. 7 | James | Finance
  12. 3 | Teddy | Engineering
  13. 4 | Mark | Finance
  14. 5 | David | Engineering
  15. 6 | Kim | Finance
  16. 1 | Paul | IT Billing
  17. 2 | Allen | Engineering
  18. 7 | James | Finance
  19. 3 | Teddy | Engineering
  20. 4 | Mark | Finance
  21. 5 | David | Engineering
  22. 6 | Kim | Finance
  23. | James |
  24. | Paul |
  25. | James |
  26. (17 行记录)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/441381
推荐阅读
相关标签
  

闽ICP备14008679号