SQL 中 DISTINCT 的全方位指南:从基础用法到性能优化
在 SQL 数据查询中,DISTINCT是一个高频使用的关键字,它的核心作用是去除结果集中的重复记录,帮助我们获取唯一值数据。但很多开发者只掌握了它的基础用法,在面对复杂场景(如多列去重、结合聚合函数)时容易踩坑,甚至导致查询性能暴跌。本文将从基础到进阶,全面解析DISTINCT的使用技巧、实战场景和优化方案。
一、DISTINCT 基础:快速掌握核心用法
DISTINCT的语法非常简洁,只需在SELECT后添加,作用于后续所有指定的列。理解它的核心逻辑是 “对指定列的组合去重”,而非单一列去重。
1.1 基本语法与执行逻辑
(1)单列去重
最常用的场景:获取某一列的所有唯一值,例如查询所有存在的部门名称。
示例表:employees(员工表)
emp_id | emp_name | dept_name | salary | hire_date |
1001 | 张三 | 研发部 | 8000 | 2022-01-10 |
1002 | 李四 | 研发部 | 9000 | 2022-03-15 |
1003 | 王五 | 市场部 | 7500 | 2022-02-20 |
1004 | 赵六 | 研发部 | 8500 | 2022-04-05 |
查询需求:获取所有不重复的部门名称
SELECT DISTINCT dept_name FROM employees; |
结果:
dept_name |
研发部 |
市场部 |
逻辑:DISTINCT对dept_name列去重,相同的 “研发部” 只保留 1 条记录。
(2)多列去重
容易被误解的场景:DISTINCT并非只对第一个列去重,而是<