🧠 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
UNIONaplica umDISTINCTno final. -
Pode usar
ORDER BYapenas 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 BYnormalmente dentro de cadaSELECT. -
Em relatórios que comparam dados antigos e novos,
UNION ALLajuda 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.