首页/数据/SQL 速查/DISTINCT 去重
本包目录(311 条)

DISTINCT 去重

对结果集去重:作用于整个 SELECT 列清单,不是单列;统计去重计数用 COUNT(DISTINCT col),注意 NULL 不参与计数。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT DISTINCT city FROM users;

SELECT COUNT(*)             AS rows_all,
       COUNT(DISTINCT city) AS cities
FROM users;
作用对象整个结果行的组合
NULL多个 NULL 视为同一组,只保留一行
计数COUNT(DISTINCT col) 忽略 NULL;MySQL 支持 COUNT(DISTINCT a, b)
PostgreSQL 不支持 COUNT(DISTINCT a, b) 多参数写法,可先用子查询去重再 COUNT(*)。

易错点

  • 从多表 JOIN 结果里 SELECT DISTINCT 只是掩盖了行放大问题,应先检查连接粒度
  • DISTINCT 搭配 ORDER BY 时,部分数据库/模式要求排序列出现在 SELECT 清单中,否则报错

数据来源与参考

  • MySQL 8.0 Reference Manual · DISTINCT
  • PostgreSQL Documentation · DISTINCT
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌