MYSQL语句 成绩表包括所选课程和学生学号 每个学生可以选一门或多门课程 求至少同时选修课程1和课程2的学时的学号
时间: 2024-10-28 21:13:05 浏览: 12
在MySQL中,你可以使用`INNER JOIN`和`GROUP BY`以及`HAVING`来查询至少同时选修课程1和课程2的学生及其学时。假设你的成绩表名为`scores`,有`student_id`(学生ID)、`course_id`(课程ID)和`credit_hours`(学时)字段,那么SQL语句可能如下:
```sql
SELECT s.student_id, SUM(s.credit_hours) as total_hours
FROM scores s
WHERE s.course_id IN (1, 2)
GROUP BY s.student_id
HAVING COUNT(DISTINCT s.course_id) = 2;
```
这个查询做了以下几件事:
1. `WHERE s.course_id IN (1, 2)` 筛选出课程ID为1或2的成绩记录。
2. `GROUP BY s.student_id` 将结果按学生ID分组。
3. `SUM(s.credit_hours)` 计算每个学生的总学时。
4. `HAVING COUNT(DISTINCT s.course_id) = 2` 验证每个学生是否有两门不同的课程记录。
阅读全文