我仍然很惊讶为什么这样简单的查询不起作用:
SELECT COUNT(DISTINCT *) FROM dbo.t_test
哪里
SELECT COUNT(DISTINCT col1) FROM dbo.t_test
和
SELECT DISTINCT * FROM dbo.t_test
有效。
有什么替代方案吗?
编辑:
DISTINCT *
检查 (col1,col2,...) 组合键的唯一性并返回这些行。我期望 COUNT(DISTINCT *) 仅返回此类行的数量。我在这里遗漏了什么吗?
最佳答案
它不起作用,因为您只能根据 documentation 在 COUNT(DISTINCT ...)
中指定单个表达式。 :
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
如果仔细观察,您会发现允许的语法不包括COUNT(DISTINCT *)
。
替代方案是这样的:
SELECT COUNT(*) FROM
(
SELECT DISTINCT * FROM dbo.t_test
) T1
关于sql - 为什么 COUNT(DISTINCT (*)) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5010470/