English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operador UNION PostgreSQL

A operação UNION do PostgreSQL combina os resultados de dois ou mais SELECT statements.

O operador UNION é usado para combinar os resultados de dois ou mais SELECT statements.

Por favor, note que cada语句SELECT dentro do UNION deve ter o mesmo número de colunas. As colunas também devem ter tipos de dados semelhantes. Além disso, a ordem das colunas em cada语句SELECT deve ser a mesma.

Sintaxe

A sintaxe básica do UNION é a seguinte:

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

A expressão condicional aqui pode ser configurada como qualquer expressão conforme necessário.

Exemplo online

criar tabela COMPANY (baixar arquivo SQL da COMPANHIA ),o conteúdo dos dados é o seguinte:

w3codeboxdb#selecionar * da COMPANHIA;
 id||nome||idade||endereço||salário
----+-------+-----+-----------+--------
  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 ||Sul-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Criar a tabela DEPARTMENT (Baixar arquivo SQL DEPARTMENT ),o conteúdo dos dados é o seguinte:

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

Agora, usamos a cláusula UNION na consulta SELECT para conectar as duas tabelas, conforme mostrado a seguir:

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;

Os resultados são os seguintes:

 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)

Cláusula UNION ALL

O operador UNION ALL pode conectar duas consultas SELECT com linhas repetidas, geralmente, o operador UNION escolhe valores diferentes. Se você permitir valores repetidos, use UNION ALL.

Sintaxe

A sintaxe básica da cláusula UNION ALL é a seguinte:

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

A expressão condicional aqui pode ser configurada como qualquer expressão conforme necessário.

Exemplo online

Agora, vamos combinar as duas tabelas mencionadas acima usando a cláusula SELECT e a cláusula 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;

Os resultados são os seguintes:

 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)