MYSQL语句 成绩表包括学号和课程编码 课程表包括课程名和课程编码 求至少同时选修数学和英语的学生的学号
时间: 2024-10-28 11:12:40 浏览: 27
MySQL45道练习题-删掉了成绩表主键.docx
你可以使用MySQL的`INNER JOIN`和`WHERE`子句来查询这个问题。假设你的成绩表名为`score`,字段有`student_id`(学号)和`course_code`(课程编码),课程表名为`courses`,字段有`course_name`(课程名)和`course_code`。
下面是一个示例SQL语句:
```sql
SELECT score.student_id
FROM score
INNER JOIN courses ON score.course_code = courses.course_code
WHERE (courses.course_name = '数学' AND score.course_code IN (
SELECT course_code FROM courses WHERE course_name = '英语'
))
GROUP BY score.student_id
HAVING COUNT(DISTINCT courses.course_name) = 2;
```
这个查询首先通过`course_code`将两个表连接起来,然后筛选出学生同时选修了数学和英语的记录,并保证每个学生只有一条匹配的记录(`COUNT(DISTINCT courses.course_name) = 2`)。结果就是至少同时选修数学和英语的学生的学号列表。
阅读全文