🧠 Explicação

UNION e UNION ALL servem pra juntar os resultados de duas ou mais instruções SELECT. Ambos combinam os dados em um único conjunto de resultados. A diferença principal é:

  • UNION: elimina duplicatas.

  • UNION ALL: mantém duplicatas (mais rápido, mas sem filtro).

É como fazer uma fusão de listas — com ou sem repetição — desde que elas tenham o mesmo número de colunas e tipos compatíveis.

🔧 Usos mais comuns

  • Consultar registros de tabelas semelhantes (ex.: histórico atual + backup).

  • Fazer junções entre bases particionadas por período (ex.: vendas_2023 e vendas_2024).

  • Trazer dados de diferentes condições em uma mesma saída.

🧾 Sintaxe

SELECT coluna1, coluna2 FROM tabela1
UNION
SELECT coluna1, coluna2 FROM tabela2;

-- ou

SELECT coluna1, coluna2 FROM tabela1
UNION ALL
SELECT coluna1, coluna2 FROM tabela2;

💻 Exemplo prático

Juntar clientes ativos e inativos:

SELECT nome, email FROM clientes_ativos
UNION
SELECT nome, email FROM clientes_inativos;

Mesmo exemplo, mas mantendo duplicatas:

SELECT nome, email FROM clientes_ativos
UNION ALL
SELECT nome, email FROM clientes_inativos;

📌 Regras

  • O número de colunas e os tipos de dados devem ser iguais nas queries.

  • A ordem das colunas influencia — devem corresponder corretamente.

  • Por padrão, o UNION aplica um DISTINCT no final.

  • Pode usar ORDER BY apenas na última query (após todas as unions).

💡 Dicas

  • Se você precisa de performance e sabe que não há duplicatas, prefira o UNION ALL.

  • Combine com WHERE, JOIN, GROUP BY normalmente dentro de cada SELECT.

  • Em relatórios que comparam dados antigos e novos, UNION ALL ajuda a mostrar todos os casos.

✅ Conclusão

UNION e UNION ALL são essenciais pra trabalhar com resultados combinados no SQL. O primeiro foca em dados únicos, o segundo em performance bruta com todos os registros. Entender a diferença é chave pra consultas eficientes e com resultado correto.