PostgreSQL Union, Union ALL com exemplos

Índice:

Anonim

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)

  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 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)

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