Como unir os resultados de duas consultas SQL?
No SQL, podemos unir os resultados de duas consultas distintas utilizando UNION
ou UNION ALL
. Isso é útil quando precisamos consolidar dados de diferentes tabelas ou criar relatórios combinados.
Usando UNION para remover duplicatas
O UNION
combina os resultados de duas consultas removendo duplicatas automaticamente:
SELECT nome, email FROM clientes
UNION
SELECT nome, email FROM fornecedores;
Essa consulta retorna uma lista única de nome
e email
, eliminando entradas repetidas.
Usando UNION ALL para manter todos os registros
Se quisermos manter todas as ocorrências, inclusive duplicadas, utilizamos UNION ALL
:
SELECT nome, email FROM clientes
UNION ALL
SELECT nome, email FROM fornecedores;
Isso retorna todos os registros, sem eliminar valores duplicados.
Diferença entre UNION e UNION ALL
Comando | Remove duplicatas? | Melhor para |
---|---|---|
UNION | Sim | Relatórios unificados sem repetições |
UNION ALL | Não | Melhor desempenho e quando queremos todas as ocorrências |
Unindo consultas com colunas diferentes
Para unir consultas com colunas diferentes, usamos alias (AS
) e valores fixos:
SELECT id, nome, 'Cliente' AS tipo FROM clientes
UNION ALL
SELECT id, nome, 'Fornecedor' AS tipo FROM fornecedores;
Aqui, adicionamos uma coluna tipo
para diferenciar os registros.
Cuidados ao unir consultas
- O número de colunas e seus tipos devem ser os mesmos em ambas as consultas.
UNION
pode ter um desempenho menor, pois exige a remoção de duplicatas.- Utilize
ORDER BY
após oUNION
para ordenar os resultados combinados.
Quando utilizar UNION e UNION ALL no SQL?
Unir resultados de consultas no SQL é essencial para relatórios combinados e análise de dados distribuídos. Em um e-commerce, podemos usar UNION
para consolidar clientes e fornecedores em uma única lista. Já no setor financeiro, podemos combinar transações de diferentes bancos de dados para gerar um extrato unificado. A escolha entre UNION
e UNION ALL
deve considerar a necessidade de remover duplicatas e o impacto na performance da consulta.
Algumas aplicações:
- Consolidar clientes e fornecedores em um único relatório
- Unificar dados de vendas e devoluções
- Gerar listas combinadas de usuários de diferentes sistemas
- Combinar informações de múltiplas tabelas para análise
- Exibir logs de diferentes fontes em uma única visualização
Dicas para quem está começando
- Use
UNION
se precisar remover duplicatas automaticamente - Se a performance for uma prioridade, prefira
UNION ALL
- Garanta que as colunas tenham os mesmos tipos de dados
- Se precisar diferenciar os resultados, adicione uma coluna fixa como
tipo
- Utilize
ORDER BY
no final para organizar os dados combinados
Contribuições de Rodrigo Martins