O DISTINCT pode ser usado para determinar quantos valores redundantes há numa lista ou, pelo contrário, quantos valores distintos há presentes.
Use a cláusula DISTINCT para selecionar os valores únicos ou agregue funções com COUNT(DISTINCT) para contá-los.
O DISTINCROW, caso você já tenha ouvido falar, é sinônimo do DISTINCT — use o que te deixa mais confortável, portanto.
Um relatório que não use funções agregadas é usado para determinar quais valores ou quais registros estão contidos no banco de dados, pela eliminação das redundâncias.
O DISTINCT é útil para reduzir o resultado de uma declaração à sua essência. Pode ser combinado com ORDER BY para ordenar a lista.
Por exemplo, se quiser saber os nomes dos clientes listados na tabela de cli_tabela, use a seguinte consulta:
SELECT DISTINCT cli_nome FROM cli_tabela ORDER BY cli_nome; _
+----------+ | cli_nome | +----------+ | Ian | | Henry | | Justin | +----------+
Uma declaração sem o uso da cláusula DISTINCT e ORDER BY produz uma relação com os mesmos nomes, só que não é tão fácil de entender.
Veja como ficaria:
SELECT cli_nome FROM cli_tabela; _
O resultado contém informação demais e fora de ordem:
+----------+ | cli_nome | +----------+ | Ian | | Justin | | Henry | | Henry | | Ian | | Henry | | Justin | | Henry | | Ian | | Henry | +----------+
Mesmo a relação contendo 10 registros de nomes de clientes, temos na verdade apenas 3 nomes de clientes nesta relação.
Se você quiser obter apenas uma contagem dos nomes de clientes registrados na tabela, use COUNT(DISTINCT). Veja um exemplo:
SELECT COUNT(DISTINCT cli_nome) FROM cli_tabela;
como já sabemos, o resultado é…
+--------------------------+ | COUNT(DISTINCT cli_nome) | +--------------------------+ | 3 | +--------------------------+
A cláusula COUNT(DISTINCT) ignora valores NULL.
Se, por acaso, você tiver interesse em incluir na conta estes tipos de valores, experimente o seguinte artifício:
Substitua, na query acima, a variável valor pelo campo desejado.
As consultas com DISTINCT, comumente são úteis quando combinadas com funções agregadas — podendo produzir uma caracterização mais completa de seus resultados.
Por exemplo, o uso da função COUNT(*) em uma tabela de clientes indica a quantidade de clientes presente.
Ao aplicar DISTINCT aos campos ‘estado’, por exemplo, revela-se em quais estados você tem clientes.
Se usar a combinação COUNT(DISTINCT), então, é possível saber por quantos estados se estende sua clientela.
Ao ser usado com múltiplas colunas, o DISTINCT mostra as diferentes combinações de valores e COUNT(DISTINCT) conta o número de combinações.