1
resposta

[Dúvida] DISTINCT no SELECT na consulta com o UNION e UNION ALL

Olá!

No exemplo da aula o professor não retirou o comando DISTINCT das consultas em que utilizou o UNION e o UNION ALL.

No primeiro exemplo com o UNION tudo bem porque o DISTINCT será aplicado de toda forma, mas ao aplicar o comando UNION ALL o DISTINCT não deveria ser retirado?

Com o DISTINCT no SELECT, e utilizando UNION ALL, o resultado do professor deu 16 bairros. Experimentei a mesma consulta retirando o DISTINCT do SELECT e o resultou retornou 20 bairros (os 16 da tabela de clientes e os 4 da tabela de vendedores). Fiz errado?

1 resposta

Oi Amanda,

Sua observação está corretíssima! 👍

O DISTINCT no SELECT quando usado com UNION é redundante, pois o UNION já remove as linhas duplicadas por padrão. No entanto, com o UNION ALL, o DISTINCT no SELECT faz diferença.

Quando você usa UNION ALL, todas as linhas das consultas são unidas, incluindo as duplicadas.

Se você mantiver o DISTINCT no SELECT de cada consulta, ele irá remover duplicatas antes da união, o que pode levar a um resultado diferente do que se você remover o DISTINCT e deixar o UNION ALL unir todas as linhas, incluindo as duplicadas.

No seu caso, ao remover o DISTINCT do SELECT e usar UNION ALL, você obteve 20 bairros, que é o resultado correto da união de todas as linhas das duas tabelas, incluindo as duplicadas.

Para saber mais: Documentação oficial do SQL Server sobre UNION e UNION ALL.

Continue explorando e aprofundando seus conhecimentos! 💪