MySQL使用右外连接查询所有课程的选修情况, 要求列出课程编号、课程名称、选修人 数, curriculum 表中没有的课程列值为空。
时间: 2024-05-13 14:16:16 浏览: 11
可以使用右外连接(RIGHT JOIN)将 course 表与 curriculum 表连接起来,以 course 表为主表,确保所有的课程都会被列出来,然后使用 COUNT 函数统计选修该课程的人数。SQL 语句如下:
```
SELECT course.course_id, course.course_name, COUNT(curriculum.student_id) AS student_count
FROM course
RIGHT JOIN curriculum ON course.course_id = curriculum.course_id
GROUP BY course.course_id
ORDER BY course.course_id;
```
解释一下这个 SQL 语句:
- `SELECT` 子句中的 `course.course_id` 和 `course.course_name` 是要查询的字段,`COUNT(curriculum.student_id)` 则是统计选修该课程的学生数量。
- `FROM` 子句中的 `course` 表是主表,右外连接的另一张表是 `curriculum` 表。
- `RIGHT JOIN` 表示右外连接,确保 `course` 表中的所有课程都会被列出来,即使在 `curriculum` 表中没有这门课程的选修情况。
- `ON` 子句中的条件是 `course.course_id = curriculum.course_id`,表示按照课程编号连接两张表。
- `GROUP BY` 子句中的 `course.course_id` 表示按照课程编号分组,以便对每个课程进行统计。
- `ORDER BY` 子句中的 `course.course_id` 表示按照课程编号排序,使查询结果更易于查看。
执行这条 SQL 语句后,将会得到一个包含课程编号、课程名称和选修人数的结果集。如果某个课程在 `curriculum` 表中没有对应的选修情况,则该课程的选修人数为 0。