查询选修了课程且没有不及格的学生的学号和姓名
时间: 2024-11-06 14:20:49 浏览: 29
10、创建视图,显示每名学生的姓名、选修的课程门数、总周学时数、总学分数和加权平均分的查询,
5星 · 资源好评率100%
假设我们有两张相关的表,一张是`students`表,包含学生的信息如`student_id`和`name`;另一张是`grades`表,包含学生的成绩信息,如`student_id`, `course_id`以及`grade`(分数)。如果你想查询选修了课程并且所有课程都没有不及格的学生,你可以使用以下SQL语句:
```sql
SELECT s.student_id, s.name
FROM students s
JOIN grades g ON s.student_id = g.student_id
WHERE g.grade >= 60 AND g.course_id IN (
SELECT course_id FROM grades
GROUP BY course_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM students WHERE student_id = g.student_id)
);
```
这个查询首先通过`JOIN`连接了`students`和`grades`表,然后筛选出那些所有课程成绩都达到及格线(通常60分)的学生。内部子查询检查每个学生的课程数量是否等于他们在`students`表中的记录数,这意味着他们只选择了这门课,没有其他课程。
阅读全文