select distinct count(id)
する場合 次に、基本的に次のことを行います:
select distinct cnt
from (select count(id) as cnt from t) t;
内部クエリは1行しか返さないため、distinct
何もしていません。クエリは行数をカウントします テーブル内(より正確には、id
が存在する行数 null
ではありません 。
一方、あなたがそうするとき:
select count(distinct id)
from t;
次に、クエリはid
であるさまざまな値の数をカウントします テーブルで引き受けます。これはあなたが望むもののように見えます。