在 MySQL 中,DISTINCT 关键字用于从查询结果中去除重复的行,只返回唯一的数据。它通常用在 SELECT 语句中,作用于一个或多个字段。
1. 对单个字段去重
如果你只想获取某个字段的唯一值,可以在字段前加上 DISTINCT。
语法:
SELECT DISTINCT 字段名 FROM 表名;
示例:
假设有一张名为
users
的表,其中
city
字段有重复数据:
SELECT DISTINCT city FROM users;
这将返回所有不重复的城市名称。
2. 对多个字段组合去重
DISTINCT 也可以作用于多个字段,表示去除这些字段组合后的重复记录。
语法:
SELECT DISTINCT 字段1, 字段2 FROM 表名;
示例:
查询不同城市和性别的组合:
SELECT DISTINCT city, gender FROM users;
只有当 city 和 gender 都相同时,才会被视为重复并被去除。
3. 结合 WHERE 条件使用
你可以将 DISTINCT 和 WHERE 一起使用,先筛选再去重。
示例:
SELECT DISTINCT city FROM users WHERE age > 25;
获取年龄大于 25 的用户所在的所有不重复城市。
4. 注意事项
– DISTINCT 会作用于其后所有的字段组合,不是单独对某一个字段生效。
– NULL 值也会被当作一个有效值参与去重,多个 NULL 会被视为相同。
– 在性能上,DISTINCT 可能会影响查询速度,尤其是数据量大时,建议在相关字段上建立索引。
– 如果需要统计去重后的数量,可以结合 COUNT 使用:SELECT COUNT(DISTINCT city) FROM users;
这将返回不重复城市的总数。
基本上就这些。DISTINCT 是一个简单但非常实用的功能,适合快速提取唯一值。使用时注意字段选择和性能影响即可。