Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

selecione contagem distinta (id) vs contagem selecionada (id distinta)


Quando você select distinct count(id) então você está basicamente fazendo:
select distinct cnt
from (select count(id) as cnt from t) t;

Como a consulta interna retorna apenas uma linha, o distinct não está fazendo nada. A consulta conta o número de linhas na tabela (bem, mais precisamente, o número de linhas em que id não é null ).

Por outro lado, quando você faz:
select count(distinct id)
from t;

Em seguida, a consulta conta o número de valores diferentes que id assume na mesa. Isso parece ser o que você quer.