Menu
Coddy logo textTech

UNION vs UNION ALL

Parte da seção Além do Básico do Journey de SQL da Coddy — lição 16 de 27.

Você conheceu o UNION em Fundamentos: ele empilha dois conjuntos de resultados um sobre o outro. Por padrão, ele também remove duplicatas, o que custa uma ordenação extra.

SELECT name FROM authors
UNION
SELECT name FROM editors

UNION ALL faz o mesmo empilhamento, mas mantém duplicatas. É mais rápido e quase sempre o que você deseja quando sabe que os dois lados não podem produzir a mesma linha, ou quando você realmente deseja contar cada ocorrência.

SELECT name FROM authors
UNION ALL
SELECT name FROM editors

Ambos os lados devem retornar o mesmo número de colunas, na mesma ordem, com tipos compatíveis.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>online_orders</strong>: <strong>order_no</strong>, <strong>amount</strong>
  • <strong>retail_orders</strong>: <strong>ticket_no</strong>, <strong>total</strong>

As duas tabelas rastreiam pedidos de diferentes canais com nomes de colunas diferentes. Retorne uma lista combinada de cada pedido com as colunas:

  • channel: 'online' ou 'retail'
  • order_id: order_no de online, ticket_no de retail
  • amount: o total do pedido (de amount ou total)

Mantenha todas as linhas (sem eliminação de duplicatas). Ordene por amount em ordem decrescente.

Folha de consulta

UNION empilha dois conjuntos de resultados e remove duplicatas (mais lento). UNION ALL empilha e mantém duplicatas (mais rápido):

SELECT name FROM authors
UNION ALL
SELECT name FROM editors

Ambos os lados devem ter o mesmo número de colunas, na mesma ordem, com tipos compatíveis. Os nomes das colunas vêm do primeiro SELECT.

Experimente você mesmo

-- dois SELECTs alinhados às mesmas 3 colunas, unidos por UNION ALL
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Além do Básico