DISTINCT用于去除查询重复数据,确保结果唯一;可对单列如SELECT DISTINCT city FROM users去重,也可多列组合去重如SELECT DISTINCT city, job FROM users;常与COUNT结合统计唯一值数量,如SELECT COUNT(DISTINCT city);注意其作用于所有选中字段,NULL视为相同值,大数据量下建议建索引以提升性能。

DISTINCT 是 MySQL 中用于去除查询结果中重复数据的关键字,常用于 SELECT 语句中,确保返回的结果集不包含重复的行。它通过比较指定列或多个列的组合值来判断是否重复,并只保留唯一值。
单列去重(基本用法)
当你只需要对某一列进行去重时,可以直接在列名前加上 DISTINCT。例如,有一个用户表 users,其中 city 字段有重复的城市名:
SELECT DISTINCT city FROM users;这条语句会返回所有不同的城市名称,每个城市只出现一次。
多列去重(组合去重)
DISTINCT 也可以作用于多个字段,表示“这些字段的组合值”必须唯一。比如查询用户的地区和职业组合,避免重复:
SELECT DISTINCT city, job FROM users;只有当
city 和 job 的组合完全相同时,才会被视为重复并被去除。
与聚合函数结合使用
DISTINCT 常与 COUNT、SUM 等聚合函数配合,统计唯一值的数量。统计不同城市的数量:
SELECT COUNT(DISTINCT city) FROM users;这将返回去重后的城市总数,比直接使用 COUNT(*) 更准确。
注意事项
- DISTINCT 会对整个 SELECT 后的字段组合进行去重,不只是第一个字段。
- NULL 值也会参与去重,多个 NULL 被视为相同值,只保留一个。
- 性能方面:在大数据量下使用 DISTINCT 可能影响查询速度,建议在相关字段上建立索引。
- 如果需要更复杂的去重逻辑(如保留某条完整记录),可考虑使用 GROUP BY 或窗口函数。










