PgSQL - Nota de estudio 12: Operador UNION y Operador UNION ALL

Tabla de contenido

Operador UNION: combina los resultados de dos o más declaraciones SELECT

Operador UNION ALL: puede conectar dos declaraciones SELECT con filas duplicadas


Operador UNION: combina los resultados de dos o más declaraciones SELECT

El operador UNION se utiliza para combinar los conjuntos de resultados de dos o más declaraciones SELECT.

Tenga en cuenta:

  • Cada instrucción SELECT dentro de UNION debe tener el mismo número de columnas .
  • Además, las columnas de cada instrucción SELECT también deben tener tipos de datos similares .
  • Además, el orden de las columnas en cada instrucción SELECT debe ser el mismo .
/*UNIONS 基础语法如下:*/
/*这里的条件语句可以根据您的需要设置任何表达式。*/

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

UNION

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

Ejemplo:

mydb=# delete from department where id = 4;
DELETE 1
mydb=# select * from department;
 id |                        dept                        | emp_id
----+----------------------------------------------------+--------
  1 | IT Billing                                         |      1
  2 | Engineering                                        |      2
  3 | Finance                                            |      7
(3 行记录)

mydb=# INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (4,'Engineering',3),(5,'Finance',4),(6,'Engineering',5),(7,'Finance',6);
INSERT 0 4
mydb=# 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 行记录)

mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
mydb-#    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
(7 行记录)

mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
mydb-#     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
        | James |
        | Paul  |
        | James |
(10 行记录)

/*在 SELECT 语句中使用 UNION 子句将两张表连接起来,如下所示:*/
mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
mydb-#    ON COMPANY.ID = DEPARTMENT.EMP_ID
mydb-#    UNION
mydb-# SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
mydb-#     ON COMPANY.ID = DEPARTMENT.EMP_ID;
 emp_id | name  |                        dept
--------+-------+----------------------------------------------------
      2 | Allen | Engineering
        | Paul  |
      6 | Kim   | Finance
      1 | Paul  | IT Billing
      5 | David | Engineering
      4 | Mark  | Finance
      3 | Teddy | Engineering
        | James |
      7 | James | Finance
(9 行记录)

Operador UNION ALL: puede conectar dos declaraciones SELECT con filas duplicadas

El operador UNION ALL puede conectar dos declaraciones SELECT con filas duplicadas.

De forma predeterminada, el operador UNION selecciona valores distintos.

Si se permiten valores duplicados, utilice UNION ALL.

/*UINON ALL 子句基础语法如下:*/
/*这里的条件语句可以根据您的需要设置任何表达式。*/

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

UNION ALL

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

 Ejemplo:

/*把上面提到的两张表用 SELECT 语句结合 UNION ALL 子句连接起来:*/
mydb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
mydb-#    ON COMPANY.ID = DEPARTMENT.EMP_ID
mydb-#    UNION ALL
mydb-# SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
mydb-#     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
        | James |
        | Paul  |
        | James |
(17 行记录)

Supongo que te gusta

Origin blog.csdn.net/qq_41361442/article/details/124850048
Recomendado
Clasificación