SQL查询语句DISTINCT详解

在数据库操作中,DISTINCT
是一个常用的关键字,用于从查询结果中去除重复的记录,本文将详细解释DISTINCT
的使用方式,并通过示例和表格展示其效果。
什么是DISTINCT?
DISTINCT
是SQL中的一个关键字,用于返回唯一不同的值,它通常与SELECT语句一起使用,以消除查询结果中的重复行,这对于需要获取唯一值列表的场景非常有用。
基本语法
SELECT DISTINCT column1, column2, ... FROM table_name;
column1, column2, ...
:要选择的列。
table_name
:数据表的名称。
示例和表格
示例1:单列使用DISTINCT

假设我们有一个名为students
的表,包含以下数据:
id | name | grade |
1 | Alice | A |
2 | Bob | B |
3 | Charlie | A |
4 | David | C |
5 | Eve | B |
如果我们想获取所有不重复的成绩(grade),可以使用以下查询:
SELECT DISTINCT grade FROM students;
结果将是:
grade |
A |
B |
C |
示例2:多列使用DISTINCT
假设我们想获取所有不重复的name
和grade
组合,可以使用以下查询:
SELECT DISTINCT name, grade FROM students;
结果将是:
name | grade |
Alice | A |
Bob | B |
Charlie | A |
David | C |
Eve | B |
示例3:结合ORDER BY使用DISTINCT
我们可以结合ORDER BY
子句对结果进行排序,按成绩升序排列:

SELECT DISTINCT grade FROM students ORDER BY grade;
结果将是:
grade |
A |
B |
C |
示例4:结合WHERE使用DISTINCT
我们可以结合WHERE
子句筛选特定条件下的唯一值,获取成绩为A或B的学生姓名:
SELECT DISTINCT name FROM students WHERE grade IN ('A', 'B');
结果将是:
name |
Alice |
Bob |
Charlie |
Eve |
相关问题与解答
问题1:如何在多个表中使用DISTINCT?
解答:可以在JOIN操作后使用DISTINCT来获取唯一的组合,有两个表students
和courses
,我们想获取每个学生选修的唯一课程名称:
SELECT DISTINCT s.name, c.course_name FROM students s JOIN courses c ON s.id = c.student_id;
问题2:如何统计使用DISTINCT后的记录数?
解答:可以使用嵌套查询或子查询来计算使用DISTINCT后的记录数,统计不同成绩的数量:
SELECT COUNT(*) AS distinct_grade_count FROM (SELECT DISTINCT grade FROM students);
或者更简洁的方式:
SELECT COUNT(DISTINCT grade) AS distinct_grade_count FROM students;
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/105496.html