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 UNION em Fundamentals: 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 as duplicatas. É mais rápido e quase sempre é o que você quer quando sabe que os dois lados não podem produzir a mesma linha ou quando realmente quer 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:

  • online_orders: order_no, amount
  • retail_orders: ticket_no, total

As duas tabelas registram pedidos de canais diferentes, com nomes de colunas diferentes. Retorne uma lista combinada de todos os pedidos com as colunas:

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

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

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

Pratique por conta própria: Playground de SQL