查询语句
要检索选修了全部课程的学生,可以使用以下 SQL 查询:
sql
SELECT student_id
FROM enrollment
GROUP BY student_id
HAVING COUNT(course_id) = (SELECT COUNT(*) FROM courses);
解释
该查询首先从enrollment表中选择student_id列。然后,它按student_id对结果进行分组。GROUP BY子句将学生分组在一起,这样每个学生只有一行。
接下来,HAVING子句检查每组中course_id列的计数。如果计数等于(SELECT COUNT(*) FROM courses)的结果,则表示该学生已选修了全部课程。
courses表用于确定课程总数,这样可以对不同数量课程的情况进行动态调整。
示例
假设我们有以下数据表:
| student_id | course_id |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |
| 3 | 4 |
运行查询后,结果将如下所示:
| student_id |
|---|---|
| 1 |
| 3 |
这表明学生 1 和学生 3 已选修了全部 4 门课程。