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 editorsUNION 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 editorsAmbos os lados devem retornar o mesmo número de colunas, na mesma ordem, com tipos compatíveis.
Desafio
FácilTabelas 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_node online,ticket_node retailamount: o total do pedido (deamountoutotal)
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 editorsAmbos 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
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.