MySQL查找课程表中没有被选修c04课程的学生选修的课程
时间: 2024-12-02 19:18:15 浏览: 23
显示/光电技术中的亿光推出High Power Flash LED EHP-C04
在MySQL中,可以使用子查询和JOIN操作来找出那些没有选修课程C04的学生并且列出他们已经选修的其他课程。假设我们有两个表:`courses`(包含课程信息,如course_id和course_name)和`enrollments`(包含学生选课信息,如student_id, course_id)。下面是一个示例SQL查询:
```sql
SELECT e.student_id, c.course_name
FROM enrollments AS e
JOIN courses AS c ON e.course_id = c.course_id
WHERE NOT EXISTS (
SELECT 1 FROM enrollments AS e2 WHERE e2.student_id = e.student_id AND e2.course_id = 'C04'
)
AND e.student_id IN (
SELECT student_id FROM enrollments GROUP BY student_id HAVING COUNT(course_id) > 1
);
```
这个查询做了两步:
1. 使用JOIN将`enrollments`和`courses`表联接,找出所有学生的选课记录。
2. 使用子查询`NOT EXISTS`检查每个学生是否选修了'C04'课程,如果不存在这样的记录,则保留该学生的信息。
3. 再次使用子查询筛选出只选修了一门课程的学生,排除掉他们。
阅读全文