DISTINCT简介DISTINCT 是 SQL 中用来返回唯一不重复结果集的关键字。它通常用于 SELECT 语句中可以指定一个或多个列进行去重并返回唯一的结果。当你在使用 SELECT 查询数据时可能会得到包含重复行的结果集。为了去除这些重复行你可以使用 DISTINCT 关键字来获取唯一的记录。表中插入的原始数据1、单列去重单列去重使用 DISTINCT 去重查询结果中的单个列返回唯一的值。SELECT DISTINCT age FROM students2、多列去重使用 DISTINCT 去重查询结果中的多个列返回满足多列组合唯一的结果。SELECT DISTINCT NAME,age,score FROM students3、结合其他关键字DISTINCT 可以与其他 SQL 关键字结合使用如 ORDER BY、WHERE 和 GROUP BY 等SELECT DISTINCT NAME,age,score FROM students ORDER BY score DESC SELECT DISTINCT NAME ,age,score FROM students GROUP BY NAME4、对表达式进行去重DISTINCT 还可以用于对表达式进行去重而不仅仅是列名。这允许你根据某些计算得到的结果进行去重。SELECT DISTINCT ( name age) result FROM students5、COUNT()统计SELECT COUNT(DISTINCT NAME) num FROM students注意事项1、distinct 必须放在字段的开头即放在第一个参数的位置。2、只能在select语句中使用不能在insert、delete、update中使用。3、distinct表示对后面的所有参数的拼接 取 不重复的记录。4、distinct 忽略 NULL 值distinct 关键字默认会忽略 NULL 值即将 NULL 视为相同的值。如果你希望包括 NULL 值在去重结果中可以使用 IS NULL 或 IS NOT NULL 进行过滤。5、DISTINCT 基于所有选择的列DISTINCT 关键字基于选择的所有列来进行去重。如果你只想根据部分列进行去重可以使用子查询或者窗口函数等技术来实现。6、DISTINCT 的性能消耗DISTINCT 操作可能会对查询的性能产生一定的影响特别是在处理大量数据时。因为它需要对结果集进行排序和比较以去除重复行。如果性能是一个关键问题可以考虑其他优化方法例如使用索引或者合理设计查询。7、结果集顺序不保证使用 DISTINCT 关键字后结果集的顺序可能会发生变化因为数据库系统通常会对结果进行重新排列以去除重复行。如果需要特定的结果排序可以使用 ORDER BY 子句进行排序。完整版代码CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(50), age INT, score DECIMAL(5, 2) ); INSERT INTO students (NAME, age, score) VALUES (Alice, 20, 85.5), (Bob, 22, 76.3), (Charlie, 21, 92.0), (Alice, 20, 85.5), (David, 23, 68.9); # 原始数据 SELECT * FROM students # 单列去重使用 DISTINCT 去重查询结果中的单个列返回唯一的值。 SELECT DISTINCT age FROM students # 多列去重使用 DISTINCT 去重查询结果中的多个列返回满足多列组合唯一的结果。 SELECT DISTINCT NAME,age,score FROM students # 结合其他关键字DISTINCT 可以与其他 SQL 关键字结合使用如 ORDER BY、WHERE 和 GROUP BY 等 SELECT DISTINCT NAME,age,score FROM students ORDER BY score DESC SELECT DISTINCT NAME ,age,score FROM students GROUP BY NAME # 对表达式进行去重DISTINCT 还可以用于对表达式进行去重而不仅仅是列名。这允许你根据某些计算得到的结果进行去重。 SELECT DISTINCT ( name age) result FROM students # COUNT()统计 SELECT COUNT(DISTINCT NAME) num FROM students