Voltar para o conteúdo

Dica Rápida: UNION vs UNION ALL muda seu total sem avisar

Entenda quando UNION esconde duplicidades reais, quando UNION ALL infla contagens e como validar a escolha antes de confiar no número final.

Raphael Carvalho · 10 de jun. de 2026 · 6 min de leitura

Resumo rápido

  • UNION remove linhas duplicadas; UNION ALL preserva todas elas.
  • Escolher um ou outro sem validar a origem dos dados pode esconder problema de deduplicação ou inflar uma métrica.
  • O check rápido é contar por origem, medir chaves repetidas e decidir se a duplicidade é bug ou comportamento esperado.

Seção: Dicas Rápidas

Tem um erro que não quebra a query, mas muda o número final de um jeito perigoso: escolher UNION ou UNION ALL no automático.

Na prática, um deles pode esconder duplicidades que você deveria investigar. O outro pode inflar contagem, receita ou volume de eventos sem que ninguém perceba a tempo.

O erro em 20 segundos

UNION junta resultados e remove linhas duplicadas.

UNION ALL junta resultados e mantém todas as linhas.

Parece detalhe de sintaxe, mas a escolha muda completamente a leitura do dado:

SELECT id_pedido, valor
FROM vendas_site

UNION

SELECT id_pedido, valor
FROM vendas_app;

Se o mesmo pedido aparecer nas duas fontes com exatamente os mesmos valores, UNION deixa uma linha só.

Agora veja:

SELECT id_pedido, valor
FROM vendas_site

UNION ALL

SELECT id_pedido, valor
FROM vendas_app;

Aqui as duas linhas continuam. Isso pode estar certo ou errado. Depende da pergunta.

O que validar antes de confiar na saída

Antes de escolher, pare por 30 segundos e responda:

  1. As duas fontes podem conter o mesmo registro?
  2. Se contiverem, isso representa bug de duplicidade ou etapas diferentes do processo?
  3. A métrica final precisa deduplicar por chave de negócio ou preservar cada ocorrência?

Sem essa resposta, UNION e UNION ALL viram chute com cara de técnica.

Sinal verde

O sinal verde aparece quando você consegue explicar claramente por que a duplicidade deve ou não deve existir.

Exemplo:

  • se a análise quer uma visão consolidada por pedido único, você provavelmente precisa preservar tudo com UNION ALL e deduplicar depois com regra explícita;
  • se as queries produzem exatamente o mesmo grão e você só quer evitar repetição literal entre blocos equivalentes, UNION pode fazer sentido.

O ponto importante é este: a deduplicação precisa ser uma decisão visível, não um efeito colateral da sintaxe.

Erro comum

O erro mais comum é usar UNION para “limpar” uma base sem entender por que a duplicidade apareceu.

Isso é perigoso porque a query fica bonita e o total parece coerente, mas o problema estrutural continua escondido. No mês seguinte ele reaparece em outro painel, em outra tabela ou em outra reconciliação.

O erro oposto também dói: usar UNION ALL em duas fontes parcialmente sobrepostas e depois confiar na soma final como se cada linha fosse única.

É assim que nascem:

  • pedidos contados duas vezes;
  • leads duplicados em funil;
  • eventos inflados em consolidação;
  • dashboards em que cada aba mostra um número diferente para a mesma operação.

Ação rápida

Se houver qualquer dúvida, comece por UNION ALL e audite a duplicidade.

WITH base AS (
  SELECT 'site' AS origem, id_pedido, valor
  FROM vendas_site

  UNION ALL

  SELECT 'app' AS origem, id_pedido, valor
  FROM vendas_app
)
SELECT
  id_pedido,
  COUNT(*) AS ocorrencias,
  COUNT(DISTINCT origem) AS fontes
FROM base
GROUP BY id_pedido
HAVING COUNT(*) > 1;

Esse teste mostra rapidamente se o mesmo pedido aparece mais de uma vez e de onde ele está vindo.

Depois disso, você decide conscientemente:

  • manter tudo, se cada ocorrência é válida;
  • deduplicar por chave, se a regra de negócio pede um único pedido;
  • investigar a origem, se a duplicidade não deveria existir.

Um checklist de 30 segundos

Antes de publicar a query, revise:

  1. O grão das duas consultas é realmente o mesmo?
  2. A duplicidade esperada está documentada ou só implícita?
  3. Você conferiu uma chave de negócio além da contagem total?
  4. Se usou UNION, sabe exatamente o que foi removido?
  5. Se usou UNION ALL, já mediu o impacto na métrica final?

Leitura prática para analista

Senioridade em SQL não é só saber juntar blocos de consulta. É saber quando a própria sintaxe está tomando uma decisão de negócio por você.

UNION e UNION ALL parecem intercambiáveis até o dia em que uma reunião inteira gira em torno de um número inflado ou subcontado. Quando esse dia chega, o melhor antídoto é simples: preserve a rastreabilidade primeiro, deduplique depois com critério.

Resumo direto

UNION remove duplicidades. UNION ALL preserva todas as linhas.

O erro não está em escolher um ou outro. O erro está em escolher sem validar se a duplicidade representa bug, sobreposição legítima ou granularidade diferente entre fontes.

SQL do Zero ao Avançado

Pratique SQL no navegador com aulas, exercícios reais e editor ao vivo.

Conhecer o curso de SQL

Perguntas frequentes

UNION é sempre mais seguro do que UNION ALL?

Não. UNION pode parecer mais seguro porque remove duplicidades, mas também pode mascarar um problema estrutural na origem ou eliminar registros que deveriam continuar separados.

Quando devo preferir UNION ALL?

Quando você quer preservar cada linha como ela veio das fontes e tratar duplicidades conscientemente depois, com regras explícitas de auditoria ou deduplicação.

Curso em português para brasileiros

SQL do Zero ao Avançado

A plataforma interativa de SQL feita para analistas. Pare de depender da fila de engenharia de dados.

Conheça o curso

Advertisement: SQL do Zero ao Avançado

Sobre o autor

Raphael Carvalho

Founder & Principal Consultant

Compartilhar Twitter LinkedIn

Leituras recomendadas