Wenn Sie select distinct count(id)
dann tun Sie im Grunde:
select distinct cnt
from (select count(id) as cnt from t) t;
Da die innere Abfrage nur eine Zeile zurückgibt, ist die distinct
tut nichts. Die Abfrage zählt die Anzahl der Zeilen in der Tabelle (genauer gesagt, die Anzahl der Zeilen, in denen id
ist nicht null
).
Auf der anderen Seite, wenn Sie Folgendes tun:
select count(distinct id)
from t;
Dann zählt die Abfrage die Anzahl der verschiedenen Werte, die id
übernimmt in der Tabelle. Dies scheint das zu sein, was Sie wollen.