distinct 不能用于count(*) 的原因
举一个简单的例子,假设你有两列,A和B.
A B
1 100
2 100
3 100
有三种不同的A值,但只有一个B值。
COUNT(DISTINCT *)
将不可能返回单个有意义的值,因为不知道是要以A列还是B列为基准来汇总。这就是为什么该语法无法工作的原因。
正确的方法是这样的:
SELECT COUNT(*) FROM
(
SELECT DISTINCT * FROM dbo.t_test
) T1
可以使用 count(distinct A) 来获得A列 不同的值 的总个数。
原文地址:
为什么COUNT(DISTINCT(*))不起作用? - VoidCC