查询至少选修两门课程的学生学号
要查询至少选修两门课程的学生学号,我们可以使用SQL的GROUP BY和HAVING子句来实现,以下是几种不同的实现方式:
使用GROUP BY和HAVING
SELECT student_id FROM enrollments GROUP BY student_id HAVING COUNT(course_id) >= 2;
使用自连接
SELECT DISTINCT e1.student_id FROM enrollments e1 JOIN enrollments e2 ON e1.student_id = e2.student_id AND e1.course_id < e2.course_id;
使用子查询
SELECT student_id
FROM enrollments
WHERE student_id IN (
SELECT student_id
FROM enrollments
GROUP BY student_id
HAVING COUNT(course_id) >= 2
);
使用窗口函数(适用于某些数据库)
WITH student_course_count AS (
SELECT student_id, COUNT(course_id) AS course_count
FROM enrollments
GROUP BY student_id
)
SELECT student_id
FROM student_course_count
WHERE course_count >= 2;
说明
- 这些查询假设有一个名为
enrollments的表,其中包含student_id和course_id字段 - 方法一是最直接和常用的方法
- 方法二通过自连接找出同一学生选修的不同课程
- 方法三使用子查询先找出满足条件的再返回
- 方法四使用窗口函数,在某些数据库中可能更高效
根据你的具体数据库结构和需求,可以选择最适合的方法。


版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。