Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL UNION

O operador `UNION` no PostgreSQL é utilizado para combinar os conjuntos de resultados de duas ou mais consultas `SELECT` em um único conjunto de resultados, eliminando as linhas duplicadas. Isso garante que o conjunto de resultados combinados seja exclusivo. A ordenação do conjunto de resultados não é inerentemente feita pelo `UNION` e deve ser explicitamente especificada com uma cláusula `ORDER BY`.

Uso

O operador `UNION` é usado quando você precisa agregar resultados de várias instruções `SELECT` em um conjunto de dados coeso. Isso é particularmente útil para mesclar tabelas com estruturas semelhantes.

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

Nessa sintaxe, `UNION` mescla os resultados das duas instruções `SELECT`, descartando quaisquer linhas duplicadas. Os nomes de coluna implícitos no conjunto de resultados são derivados da primeira instrução `SELECT`.

Exemplos

1. União básica

SELECT city
FROM customers
UNION
SELECT city
FROM suppliers;

Este exemplo mescla uma lista de cidades das tabelas `customers` e `suppliers`, removendo as duplicatas para que você tenha uma lista única.

2. UNION com nomes de coluna diferentes

SELECT first_name AS name
FROM employees
UNION
SELECT supplier_name AS name
FROM suppliers;

Aqui, as colunas com nomes diferentes são combinadas usando `UNION`. O alias `name` se aplica ao conjunto de resultados, e a consistência dos aliases é crucial para a legibilidade e a manutenção. As colunas devem ter o mesmo tipo de dados.

3. UNION com ORDER BY

SELECT product_name
FROM products
UNION
SELECT service_name
FROM services
ORDER BY 1;

Este exemplo combina nomes de produtos e serviços em uma lista e ordena todo o conjunto de resultados em ordem alfabética. A cláusula `ORDER BY` usa a posição da coluna, o que geralmente é recomendado para evitar ambiguidade.

Dicas e práticas recomendadas

  • Garanta a compatibilidade da coluna. O número e os tipos de dados das colunas em cada `SELECT` devem corresponder.
  • Use `UNION ALL` para obter desempenho. Se as duplicatas forem aceitáveis, o `UNION ALL` evita a sobrecarga de classificação e remoção de duplicatas.
  • Seja cauteloso com `ORDER BY`. Somente o `SELECT` final pode incluir uma cláusula `ORDER BY`, afetando todo o conjunto de resultados. Faça referência aos nomes das colunas de saída ou use as posições das colunas para evitar ambiguidade.
  • Verifique se você está lidando com NULL. Certifique-se de que as colunas nas consultas tratem os valores `NULL` de forma consistente para evitar resultados inesperados.
  • Considere a indexação. As tabelas de indexação usadas em consultas `UNION` podem otimizar o desempenho, acelerando a recuperação de dados.
  • Compreender as implicações do desempenho. O uso do `UNION` pode envolver processamento adicional para classificação e eliminação de duplicatas em comparação com o `UNION ALL`.