Když select distinct count(id)
pak v podstatě děláte:
select distinct cnt
from (select count(id) as cnt from t) t;
Protože vnitřní dotaz vrací pouze jeden řádek, distinct
nic nedělá. Dotaz počítá počet řádků v tabulce (no, přesněji, počet řádků, kde id
není null
).
Na druhou stranu, když to uděláte:
select count(distinct id)
from t;
Potom dotaz spočítá počet různých hodnot, které id
přebírá v tabulce. Zdá se, že toto je to, co chcete.