sql - 为什么 COUNT(DISTINCT (*)) 不起作用?

标签 sql sql-server

我仍然很惊讶为什么这样简单的查询不起作用:

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 *) 仅返回此类行的数量。我在这里遗漏了什么吗?

最佳答案

它不起作用,因为您只能根据 documentationCOUNT(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/

相关文章:

SQL 根据条件求和不同列的值

sql - 在表中查找尾随空格

sql - 如何在一个查询中从多个数据库中获取数据?

asp.net - 逗号附近的语法不正确

sql - 当您设置存储过程级别时, View 的隔离级别是多少?

mysql - 如何在MySQL中进行动态限制?

sql - 存储过程参数值记录

node.js - 如何修复 'Unclosed quotation mark after the character string\' )\'.' 错误

SQL Server 日期时间转换问题

sql - Oracle SQL Developer中的时间戳文字