钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读830223
首页 SQL 正文内容

sql怎么检索选修了全部课程

钟逸 SQL 2025-06-14 06:39:14 3

查询语句

要检索选修了全部课程的学生,可以使用以下 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 门课程。

文章目录
    搜索