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