sql中用嵌套查询, 查询选修了“王敏”所选全部课程的学生学号;
时间: 2024-11-30 07:22:42 浏览: 30
在SQL中,要使用嵌套查询(子查询)来找出选修了"王敏"教授的所有课程的学生学号,假设我们有两个表:`courses` 存储课程信息,包括 `course_id`, `professor_name` 和 `student_id`;另一个表 `enrollments` 存储学生选课信息,包括 `student_id` 和 `course_id`。
你可以使用以下查询语句:
```sql
SELECT e.student_id
FROM enrollments e
JOIN courses c ON e.course_id = c.course_id
WHERE c.professor_name = '王敏'
GROUP BY e.student_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM courses WHERE professor_name = '王敏');
```
这个查询的工作原理如下:
1. 使用 `JOIN` 来连接 `enrollments` 和 `courses` 表,基于它们之间的关联。
2. `WHERE` 子句筛选出由 "王敏" 教授的课程。
3. `GROUP BY` 按照 `student_id` 分组,这样每个学生的选课记录会被组合在一起。
4. `HAVING COUNT(*)` 检查每个学生的选课数量是否等于 "王敏" 所有课程的数量,这通过嵌套的子查询实现,子查询计算了 "王敏" 的课程总数。
请注意,实际数据库结构可能会有所不同,上述查询假设 `professor_name` 字段只存储单个教授的名字,如果有多名教授,可能需要调整条件。
阅读全文