🧠 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 umDISTINCT
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 cadaSELECT
. -
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.