MySQL 数据去重
DISTINCT 去重
1. 单字段去重
以表 student_course 和 表 student 链接为例:
sql
SELECT \* FROM student_course a INNER JOIN student b ON a.student_id=b.id;
查询结果如下图:
若只需要学生信息
,则需要对结果进行去重:
sql
SELECT DISTINCT student_id
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id;
执行结果如下图 :
2. 多字段去重
以表 student_course
、course
、teacher
链接为例:
sql
SELECT \*
FROM
student_course a
INNER JOIN
course b
ON a.course_id=b.id
INNER JOIN teacher c
ON b.teacher_id=c.id;
查询结果如下图:
若需要得到所有教师的所有课程信息
,则需要多个字段对结果去重:
sql
SELECT
DISTINCT a.course_id,b.course_name,b.teacher_id,c.name
FROM
student_course a
INNER JOIN
course b
ON a.course_id=b.id
INNER JOIN teacher c
ON b.teacher_id=c.id;
查询结果如下图 :
多字段去重意思就是只有所有指定的列信息都相同,才会被认定为重复的信息。
需要对分组的数据统计:
sql
SELECT teacher_id,count(\*) FROM course GROUP BY teacher_id;
执行结果如下图: