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á:
- O que é PostgreSQL Union?
- Sintaxe
- União
- União de todos
- ORDENAR POR
- Quando usar o Union e quando usar o Union all?
- Usando o pgAdmin
Sintaxe
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM 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. Deixe-nos demonstrar isso.
Temos um banco de dados denominado Demo com as seguintes tabelas:
Livro:
Preço:
Vamos executar o seguinte comando:
SELECT idFROM BookUNIONSELECT idFROM 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_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM 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 idFROM BookUNION ALLSELECT idFROM 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 PriceUNIONSELECT *FROM Price2ORDER 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 PriceUNIONSELECT *FROM Price2ORDER 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:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Etapa 4) Clique no botão Executar.
Ele deve retornar o seguinte:
União de todos
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Etapa 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 idFROM BookUNION ALLSELECT idFROM priceORDER 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