50個のSQL文(MySQL版)問題12

2162 ワード

----------------------------------------------------------------------------------------
student(StuId,StuName,StuAge,StuSex)学生表
teacher(TId,Tname)教師表
course(CId,Cname,C_TId)カリキュラム
sc(SId,S_CId,Score)成績表
----------------------------------------------------------
質問12:少なくとも学号が「1001」の学生のすべての課程の他の学生の学号と名前を調べた.
SELECT st.StuId,st.StuName FROM student st
INNER JOIN sc ON st.StuId=sc.SId
WHERE sc.S_CId IN (SELECT S_CId FROM sc WHERE SId='1001')
GROUP BY st.StuId
HAVING COUNT(sc.S_CId)=(SELECT COUNT(*) FROM sc WHERE SId='1001')
AND st.StuId<>'1001';

答えはただ参考にして、必ずしも完全に正しいとは限らなくて、もし间违いを発见してあるいはもっと良いことがあるならば、评论を歓迎して、互いに交流して、いっしょに成长します!!!