जब आप select distinct count(id)
तो आप मूल रूप से कर रहे हैं:
select distinct cnt
from (select count(id) as cnt from t) t;
क्योंकि आंतरिक क्वेरी केवल एक पंक्ति लौटाती है, distinct
कुछ नहीं कर रहा है। क्वेरी पंक्तियों की संख्या की गणना करती है तालिका में (ठीक है, अधिक सटीक रूप से, पंक्तियों की संख्या जहां id
null
नहीं है )।
दूसरी ओर, जब आप करते हैं:
select count(distinct id)
from t;
फिर क्वेरी विभिन्न मानों की संख्या की गणना करती है जो id
तालिका में लेता है। यह वही प्रतीत होगा जो आप चाहते हैं।