ostgreSQL Union, Union ALL com exemplos

O que é PostgreSQL Union?

O operador PostgreSQL UNION é usado para combinar conjuntos de resultados de mais de uma instrução SELECT em um conjunto de resultados. Todas as linhas duplicadas dos resultados das instruções SELECT são eliminadas. O operador UNION trabalha sob duas condições:

  • As consultas SELECT DEVEM retornar um número semelhante de consultas.
  • Os tipos de dados de todas as colunas correspondentes devem ser compatíveis.

O operador UNION é normalmente usado para combinar dados de tabelas relacionadas que não foram normalizadas perfeitamente.

Neste tutorial do PostgreSQL, você aprenderá:

Sintaxe

 SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)]; 

Aqui está uma explicação para os parâmetros acima:

A expressão_1, expressão_2, ... expressão_n são os cálculos ou colunas que você precisa recuperar.

As tabelas são as tabelas das quais você precisa recuperar os registros.

A (s) condição (ões) WHERE são as condições que devem ser atendidas para que os registros sejam recuperados.

Observação: como o operador UNION não retorna duplicatas, o uso de UNION DISTINCT não terá impacto nos resultados.

União

O operador UNION remove duplicatas. Vamos demonstrar isso.

Temos um banco de dados denominado Demo com as seguintes tabelas:

Livro:

Preço:

Vamos executar o seguinte comando:

 SELECT id FROM Book UNION SELECT id FROM Price; 

O comando retornará o seguinte:

A coluna id aparece nas tabelas Livro e Preço. No entanto, ele aparece apenas uma vez no resultado. A razão é que o operador PostgreSQL UNION não retorna duplicatas.

União de todos

Este operador combina conjuntos de resultados de mais de uma instrução SELECT sem remover duplicatas. O operador requer que cada instrução SELECT tenha um número semelhante de campos em conjuntos de resultados de tipos de dados semelhantes.

Sintaxe:

 SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION ALL SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)]; 

Aqui está uma explicação para os parâmetros acima:

A expressão_1, expressão_2, ... expressão_n são os cálculos ou colunas que você precisa recuperar.

As tabelas são as tabelas das quais você precisa recuperar os registros.

A (s) condição (ões) WHERE são as condições que devem ser atendidas para que os registros sejam recuperados.

Nota: ambas as expressões devem ter um número igual de expressões.

Usaremos as seguintes tabelas:

Livro:

Preço:

Execute o seguinte comando:

 SELECT id FROM Book UNION ALL SELECT id FROM price; 

Ele deve retornar o seguinte:

As duplicatas não foram removidas.

ORDENAR POR

O operador PostgreSQL UNION pode ser usado junto com a cláusula ORDER BY para ordenar os resultados da consulta. Para demonstrar isso, usaremos as seguintes tabelas:

Preço:

Preço 2:

Aqui está o comando que demonstra como usar o operador UNION junto com a cláusula ORDER BY:

 SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price; 

O comando retornará o seguinte:

Os registros foram ordenados pela coluna de preços. A cláusula ordena os registros em ordem crescente por padrão. Para ordená-los em ordem decrescente, adicione a cláusula DESC conforme mostrado abaixo:

 SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC; 

O comando retornará o seguinte:

Os registros foram ordenados com base na coluna de preços em ordem decrescente.

Quando usar o Union e quando usar o Union all?

Use o operador UNION quando você tiver várias tabelas com uma estrutura semelhante, mas divididas por um motivo. É bom quando você precisa remover / eliminar registros duplicados.

Use o operador UNION ALL quando não precisar remover / eliminar registros duplicados.

Usando o pgAdmin

Agora vamos ver como todas as três ações são executadas usando o pgAdmin.

União

Para fazer o mesmo por meio do pgAdmin, faça o seguinte:

Passo 1) Faça login na sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;

Passo 4) Clique no botão Executar.

Ele deve retornar o seguinte:

União de todos

Passo 1) Faça login na sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique em Demo.

Etapa 3) Digite a consulta no editor de consultas:

SELECT id FROM Book UNION ALL SELECT id FROM price; 

Passo 4) Clique no botão Executar.

Ele deve retornar o seguinte:

ORDENAR POR

O operador UNION ALL pode ser combinado com a cláusula ORDER BY para ordenar os resultados no conjunto de resultados. Por exemplo:

 SELECT id FROM Book UNION ALL SELECT id FROM price ORDER BY id; 

O comando retornará o seguinte:

Os resultados foram encomendados.

Resumo:

  • O operador PostgreSQL UNION combina os resultados de mais de uma instrução SELECT em um conjunto de resultados.
  • O operador UNION não retorna registros duplicados.
  • Para ordenar os resultados, combine-o com a cláusula ORDER BY.
  • O operador UNION ALL combina os resultados de mais de uma instrução SELECT em um conjunto de resultados.
  • O operador UNION ALL não remove duplicatas.

Baixe o banco de dados usado neste tutorial