PostgreSQL União, União TODOS com Exemplos

⚡ Resumo Inteligente

PostgreSQL A instrução UNION combina os resultados de duas ou mais instruções SELECT em um único conjunto de resultados e remove linhas duplicadas, enquanto a instrução UNION ALL mantém todas as linhas, oferecendo uma opção mais rápida quando as duplicatas não são relevantes.

  • 🔗 Combinar: UNION combina linhas de várias instruções SELECT em um único conjunto de resultados.
  • 🧹 Duplicados: UNION remove linhas duplicadas, enquanto UNION ALL mantém todas as linhas correspondentes.
  • 📐 Regras: Cada instrução SELECT deve retornar o mesmo número de colunas com tipos de dados compatíveis.
  • ↕️ ORDENAR POR: Uma única cláusula ORDER BY no final ordena o conjunto de resultados combinado.
  • Desempenho: A instrução UNION ALL é executada mais rapidamente porque ignora a etapa de remoção de duplicados.
  • 🤖 Ajuda da IA: Os assistentes de IA alinham as colunas e escolhem entre UNION e UNION ALL.

PostgreSQL UNIÃO e UNIÃO TODOS

O que é a PostgreSQL União?

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

  • As consultas SELECT devem retornar o mesmo número de colunas.
  • 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 perfeitamente normalizadas.

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 registros.

As condiçõ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 duplicados, o uso de UNION DISTINCT não terá impacto nos resultados.

PostgreSQL União

O operador UNION remove duplicados, da mesma forma que SELECT DISTINCT Sim. Vamos demonstrar isso. Temos um banco de dados chamado Demo com as seguintes tabelas:

Livro:

PostgreSQL União

Preço:

PostgreSQL União

Vamos executar o seguinte comando:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

O comando retornará o seguinte:

PostgreSQL União

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

PostgreSQL União tudo

Este operador combina conjuntos de resultados de mais de uma instrução SELECT sem remover duplicatas. O operador exige 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 registros.

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

Observação: Ambas as instruções SELECT devem ter o mesmo número de expressões.

Usaremos as seguintes tabelas:

Livro:

PostgreSQL União tudo

Preço:

PostgreSQL União tudo

Execute o seguinte comando:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Deve retornar o seguinte:

PostgreSQL União tudo

As duplicatas não foram removidas.

ORDENAR POR

O PostgreSQL O operador 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:

ORDENAR POR

Preço2:

ORDENAR POR

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:

ORDENAR POR

Os registros foram ordenados pela coluna de preço. 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:

ORDENAR POR

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

Quando usar Union e quando usar Union All?

Use o operador UNION quando você tiver várias tabelas com estrutura semelhante, mas separadas por algum motivo. Ele é útil quando você precisa remover ou eliminar registros duplicados.

Utilize o operador UNION ALL quando não precisar remover ou eliminar registros duplicados.

Usando pgAdmin

Agora vejamos como as três ações são realizadas usando o pgAdmin.

Como usar PostgreSQL União usando pgAdmin

A seguir, apresentamos um processo passo a passo sobre como usar PostgreSQL UNION através do pgAdmin:

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

Passo 2) Na barra de navegação à esquerda, clique em Bancos de Dados e, em seguida, em Demonstração.

Uso PostgreSQL União usando pgAdmin

Passo 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.

Uso PostgreSQL União usando pgAdmin

Deve retornar o seguinte:

Uso PostgreSQL União usando pgAdmin

União tudo

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

Passo 2) Na barra de navegação à esquerda, clique em Bancos de Dados e, em seguida, em Demonstração.

Uso PostgreSQL Unir tudo usando pgAdmin

Passo 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.

Uso PostgreSQL Unir tudo usando pgAdmin

Deve retornar o seguinte:

Uso PostgreSQL Unir tudo usando pgAdmin

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:

Uso PostgreSQL ORDENAR POR usando pgAdmin

Os resultados foram ordenados.

Baixe o banco de dados usado neste tutorial

Perguntas Frequentes

UNION ALL é mais rápido porque simplesmente concatena as linhas. UNION precisa classificar ou aplicar um hash às linhas combinadas para remover duplicatas, o que aumenta a sobrecarga. Quando duplicatas não são relevantes, UNION ALL é a opção mais eficiente.

Sim. Cada instrução SELECT em uma UNION deve retornar o mesmo número de colunas, e as colunas correspondentes devem ter tipos de dados compatíveis na mesma ordem. Caso contrário, PostgreSQL Ocorre um erro e a consulta falha.

Sim. Os nomes das colunas podem ser diferentes porque a operação UNION compara colunas por posição, não por nome. Os tipos de dados ainda precisam ser compatíveis, e o conjunto de resultados usa os nomes das colunas da primeira instrução SELECT.

A operação UNION empilha verticalmente as linhas de dois conjuntos de resultados em uma única lista de colunas, removendo duplicatas. Já a operação JOIN combina horizontalmente colunas de tabelas diferentes com base em uma chave relacionada, ampliando as linhas em vez de concatená-las.

ORDER BY ordena o resultado final combinado, portanto PostgreSQL Permite apenas uma cláusula ORDER BY após a última cláusula SELECT. Ordenar as consultas individuais primeiro seria inútil depois que suas linhas fossem mescladas.

Assistentes de IA como o GitHub Copilot alinham as listas de colunas de cada SELECT, sinalizam tipos de dados incompatíveis e recomendam UNION ou UNION ALL com base na necessidade de manter duplicatas, reduzindo erros comuns em consultas.

Sim. Ao analisar suas tabelas e seu objetivo, um assistente de IA pode determinar se linhas duplicadas são possíveis e relevantes, sugerindo então UNION ALL quando duplicatas forem aceitáveis ​​para agilizar o processo, ou UNION quando elas precisarem ser removidas.

UNION retorna as linhas encontradas em qualquer uma das consultas. INTERSECT retorna apenas as linhas presentes em ambas as consultas, e EXCEPT retorna as linhas presentes na primeira consulta, mas não na segunda. Todas as três removem duplicatas por padrão.

Resuma esta postagem com: