6、查询在 SC 表存在成绩的学生信息
题目理解:只要存在成绩则满足要求,即便成绩为0,也就是说只有在所有课程的成绩均为null时才不满足要求。
①、
select S.sid,S.sname,S.sage
from student AS S
inner join(select sid
from SC
group by sid
having count(score)>0
) AS SC1
ON S.sid=sc1.sid;
笔者的程序不足之处:没提取成绩。解决方法,再加个与SC表的左联结left join,或者联结后用in或者exits 筛选,前面题中有类似用法,不再赘述。
②、
网络答案:
SELECT DISTINCT(SC.Sid), Student.sname, Student.sage, Student.ssex
FROM SC LEFT JOIN Student
ON SC.Sid = Student.Sid;
默认score非空
7.1 、查有成绩的学生信息
网络答案:
SELECT *
FROM Student
WHERE Sid IN (SELECT Sid FROM SC);
与6.②是同样的效果,可对比两个程序,这个也是笔者一直考虑的问题:联结和子查询究竟优先选择哪个?!求大神解答!!!