Como filtrar registros distintos no SQL com DISTINCT?
O comando DISTINCT no SQL permite retornar apenas valores únicos, eliminando registros duplicados na consulta.
Exemplo básico de DISTINCT
Se tivermos uma tabela clientes
com várias cidades repetidas, podemos listar apenas os nomes de cidades únicas:
SELECT DISTINCT cidade FROM clientes;
Isso retorna apenas uma vez cada cidade existente na tabela, removendo repetições.
Usando DISTINCT em múltiplas colunas
Também podemos aplicar DISTINCT
a mais de uma coluna para garantir que a combinação delas seja única:
SELECT DISTINCT cidade, estado FROM clientes;
Aqui, cada combinação única de cidade
e estado
será exibida, removendo linhas duplicadas.
Contando registros distintos
Se quisermos saber quantos valores únicos existem em uma coluna, usamos COUNT(DISTINCT coluna)
, como no exemplo abaixo:
SELECT COUNT(DISTINCT cidade) AS total_cidades FROM clientes;
Isso retorna a quantidade de cidades diferentes cadastradas na tabela clientes
.
Cuidados ao usar DISTINCT
- DISTINCT pode impactar a performance em grandes tabelas, pois o banco precisa processar e eliminar duplicatas.
- Sempre teste sua consulta sem
DISTINCT
antes de aplicá-lo para entender o impacto no resultado. - Se precisar remover duplicatas permanentemente, considere normalizar a estrutura do banco de dados.
Por que usar DISTINCT no SQL e quando evitá-lo?
O uso do DISTINCT
no SQL é uma solução prática para evitar registros duplicados em consultas, mas deve ser usado com cautela. Em grandes volumes de dados, a remoção de duplicatas pode gerar um alto custo computacional, pois o banco de dados precisa varrer e comparar os registros. Sempre que possível, vale a pena avaliar se a modelagem do banco está correta ou se índices podem ser utilizados para otimizar as consultas. Além disso, DISTINCT
pode ser útil em relatórios e dashboards, garantindo que apenas valores únicos sejam exibidos para análise.
Algumas aplicações:
- Listagem de categorias únicas em um sistema de produtos
- Identificação de cidades distintas em cadastros de clientes
- Evitar registros duplicados em relatórios financeiros
- Filtragem de valores únicos em pesquisas de dados
- Otimização de análises para evitar redundâncias
Dicas para quem está começando
- Use
DISTINCT
apenas quando necessário para evitar sobrecarga no banco - Teste a consulta sem
DISTINCT
primeiro para entender os dados retornados - Se precisar de contagens, utilize
COUNT(DISTINCT coluna)
- Combine
DISTINCT
comORDER BY
para organizar melhor os resultados - Evite
DISTINCT
em consultas que já usam colunas de chave primária, pois os registros já são únicos
Contribuições de Carla Nunes