一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何在SQL中通过COUNT(DISTINCT)实现多字段去重计数

时间:2026-07-10 10:38:45 编辑:袖梨 来源:一聚教程网

MySQL 8.0+原生支持COUNT(DISTINCT col1, col2),而PostgreSQL、SQL Server等数据库不支持该语法,因其将DISTINCT视为单值修饰符;PostgreSQL需用COUNT(DISTINCT (col1, col2))行构造器,SQL Server则必须用子查询SELECT COUNT(*) FROM (SELECT DISTINCT col1, col2 FROM t) AS tmp。

为什么 COUNT(DISTINCT col1, col2) 在 MySQL 里能用,但在 PostgreSQL 和 SQL Server 里报错?

因为标准 SQL 不支持 COUNT(DISTINCT col1, col2) 这种多列写法——只有 MySQL(8.0+)和 SQLite 原生支持。PostgreSQL、SQL Server、Oracle 都会直接抛出 ERROR: syntax error at or near "," 或类似提示。

本质是:这些数据库把 DISTINCT 当作单值修饰符,不接受元组级去重语义。MySQL 是特例,它把 (col1, col2) 解析为一个复合表达式,等价于 COUNT(DISTINCT CONCAT(col1, '

热门栏目