MySQL关联查询中如何使用分组和排序

   2024-10-07 5640
核心提示:在MySQL关联查询中,可以使用GROUP BY子句对查询结果进行分组,使用ORDER BY子句对分组后的结果进行排序。以下是一个示例:假设

在MySQL关联查询中,可以使用GROUP BY子句对查询结果进行分组,使用ORDER BY子句对分组后的结果进行排序。以下是一个示例:

假设有两个表,一个是学生表(student),一个是课程表(course),学生表中包含学生的ID和姓名,课程表中包含课程的ID和名称,两个表之间通过学生选课的关系表选课表(student_course)进行关联。

查询每个学生选修的课程数,并按选修的课程数降序排序:
SELECT s.student_id, s.student_name, COUNT(c.course_id) AS num_coursesFROM student sLEFT JOIN student_course sc ON s.student_id = sc.student_idLEFT JOIN course c ON sc.course_id = c.course_idGROUP BY s.student_id, s.student_nameORDER BY num_courses DESC;

在这个查询中,首先通过LEFT JOIN将学生表和选课表关联起来,然后再通过LEFT JOIN将选课表和课程表关联起来。然后使用GROUP BY子句按学生ID和姓名进行分组,使用COUNT函数统计每个学生选修的课程数。最后使用ORDER BY子句按选修的课程数降序排序。

查询每门课程的平均成绩,并按平均成绩升序排序:
SELECT c.course_id, c.course_name, AVG(sc.score) AS avg_scoreFROM course cLEFT JOIN student_course sc ON c.course_id = sc.course_idGROUP BY c.course_id, c.course_nameORDER BY avg_score ASC;

在这个查询中,首先通过LEFT JOIN将课程表和选课表关联起来。然后使用GROUP BY子句按课程ID和名称进行分组,使用AVG函数计算每门课程的平均成绩。最后使用ORDER BY子句按平均成绩升序排序。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号