Khi bạn thực hiện select distinct count(id)
thì về cơ bản bạn đang làm:
select distinct cnt
from (select count(id) as cnt from t) t;
Bởi vì truy vấn bên trong chỉ trả về một hàng, distinct
không làm gì cả. Truy vấn đếm số hàng trong bảng (tốt, chính xác hơn là số hàng trong đó id
không phải là null
).
Mặt khác, khi bạn thực hiện:
select count(distinct id)
from t;
Sau đó, truy vấn đếm số lượng các giá trị khác nhau mà id
diễn ra trong bảng. Đây có vẻ là những gì bạn muốn.