MySQL查询至少选修了08002同学所选修的全部课程的其他学生的号码的语句
时间: 2024-10-25 14:12:02 浏览: 40
学生选课管理系统php+mysql集成
你可以使用MySQL的JOIN和GROUP BY语句来完成这个查询。假设我们有两个表,一个是`students`,包含学生信息,如`s_id`(学生ID),`student_number`(学生号码);另一个是`courses_taken`,包含学生选课记录,如`t_s_id`(学生ID)、`course_id`(课程ID)。那么查询语句可以类似这样:
```sql
SELECT s.student_number
FROM students s
JOIN (
SELECT t_s_id, GROUP_CONCAT(course_id) AS course_ids
FROM courses_taken
WHERE t_s_id = (SELECT s_id FROM students WHERE student_number = '08002')
GROUP BY t_s_id
) ct ON s.s_id = ct.t_s_id
WHERE NOT EXISTS (
SELECT *
FROM courses_taken ct2
WHERE ct2.course_id IN (ct.course_ids)
AND ct2.t_s_id = s.s_id
);
```
这个查询首先找出08002同学所选的所有课程(course_ids),然后从所有学生中选择那些既没有选过这些课程,又不是08002的学生。
阅读全文