7. 查询没有学全所有课程的学生信息(成绩表中没有记录的学生不考虑)
关键词分析: 没有学全、所有课程、学生信息
第一步: 锁定表,我们发现需要查询三张表。

第二步: 从课程表查出一共有几门课程
SELECT COUNT(DISTINCT Cid) FROM course;

第三步: 某门课程有成绩表示学生选了该门课,所以从成绩表看有成绩的科目数小于总课程数的有哪些学生
SELECT sid,COUNT(Cid) ct FROM SC
GROUP BY sid
HAVING ct < (SELECT COUNT(DISTINCT cid) FROM course);

第四步: 从学生表中查出这几个学生的详细信息
SELECT
st.*,
s.ct
FROM
student st
JOIN
(SELECT sid,COUNT(Cid) ct FROM SC
GROUP BY sid
HAVING ct < (SELECT COUNT(DISTINCT cid) FROM course)) s
ON st.`SId` = s.sid ;

本文介绍如何通过SQL查询未学全所有课程的学生信息。首先确定总课程数,然后找出成绩记录中的学生及其所学课程数量,筛选出所学课程少于总数的学生,并最终获取这些学生的详细资料。
267

被折叠的 条评论
为什么被折叠?



