MySQL中用group by语句找到没有不及格记录的课程
时间: 2024-10-15 14:12:32 浏览: 31
在MySQL中,如果你想找出没有学生不及格的课程,你可以使用`GROUP BY`语句结合`HAVING`条件来实现。假设有一个名为`grades`的表,其中包含`course_id`, `student_id`, 和 `grade`字段,我们可以这样做:
```sql
SELECT course_id
FROM grades
GROUP BY course_id
HAVING COUNT(*) = SUM(CASE WHEN grade >= 60 THEN 1 ELSE 0 END);
```
这个查询的工作原理是:
- `GROUP BY course_id` 将数据按照课程ID分组。
- `COUNT(*)` 计算每个课程组有多少条记录。
- `SUM(CASE WHEN grade >= 60 THEN 1 ELSE 0 END)` 计算每个课程中有多少等级不低于60(及格)的学生。如果所有学生的成绩都及格,则该课程的计数结果等于总学生数。
`HAVING COUNT(*) = SUM(...)` 条件意味着只有当课程的总人数(即及格的学生数)等于该课程的所有学生时,才会返回这个课程ID。
阅读全文