这是可行的SQL(奇怪),但仍然只返回所有项目的COUNT,而不是列中DISTINCT项目的COUNT。
SELECT DISTINCT(COUNT(columnName)) FROM tableName;
答案 0 :(得分:14)
SELECT COUNT(*) FROM tableName
计算表格中的所有行
SELECT COUNT(columnName) FROM tableName
计算表中columnName不为null的所有行,并
SELECT (DISTINCT COUNT(columnName)) FROM tableName
计算表中所有行,其中columnName既不是null又是不同的(即没有两个相同)
SELECT DISTINCT(COUNT(columnName)) FROM tableName
是第二个查询(返回,比如说42),并且在计算行数后会应用distinct。
答案 1 :(得分:12)
你需要
SELECT COUNT(DISTINCT columnName) AS Cnt
FROM tableName;
您的问题中的查询获得COUNT
(即一行的结果集),然后将Distinct
应用于显然无效的单行结果。
答案 2 :(得分:3)
SELECT COUNT(*) FROM (SELECT DISTINCT columnName FROM tableName);