Wanneer u select distinct count(id)
dan doe je eigenlijk:
select distinct cnt
from (select count(id) as cnt from t) t;
Omdat de binnenste query slechts één rij retourneert, is de distinct
doet niets. De zoekopdracht telt het aantal rijen in de tabel (nou ja, nauwkeuriger, het aantal rijen waar id
is niet null
).
Aan de andere kant, wanneer u dit doet:
select count(distinct id)
from t;
Vervolgens telt de query het aantal verschillende waarden dat id
op tafel neemt. Dit lijkt te zijn wat je wilt.