如何使用MySQL的NOT EXISTS子句查询从未选修过GG老师授课的课程的学生姓名?
时间: 2024-10-27 22:14:03 浏览: 26
MySQL的子查询中FROM和EXISTS子句的使用教程
在MySQL中,可以使用NOT EXISTS子句与FROM子查询结合来查找从未选修过GG老师授课的课程的学生。假设有一个名为`teacher_courses`的表,其中存储了教师及其授课课程信息,以及`student_courses`表记录学生的选课情况。下面是如何编写这样的查询:
```sql
SELECT s.name
FROM student s
WHERE NOT EXISTS (SELECT 1 FROM teacher_courses tc WHERE tc.teacher_name = 'GG' AND tc.course_id IN (SELECT course_id FROM student_courses WHERE student_courses.student_id = s.id))
```
这段SQL的意思是,从`student`表中选择那些在其对应的`student_courses`表中找不到对应GG老师授课课程的学生姓名。这里的`tc.teacher_name = 'GG' AND tc.course_id IN ...`是子查询部分,它找出GG老师的课程ID,然后外部的`NOT EXISTS`条件则确保这些课程ID不是学生已经选修过的。
阅读全文