Saat Anda melakukan select distinct count(id)
maka pada dasarnya Anda melakukan:
select distinct cnt
from (select count(id) as cnt from t) t;
Karena kueri dalam hanya mengembalikan satu baris, distinct
tidak melakukan apa-apa. Kueri menghitung jumlah baris dalam tabel (lebih tepatnya, jumlah baris di mana id
bukan null
).
Di sisi lain, ketika Anda melakukannya:
select count(distinct id)
from t;
Kemudian kueri menghitung jumlah nilai berbeda yang id
mengambil di meja. Tampaknya ini yang Anda inginkan.