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

2551 ワード

----------------------------------------------------------------------------------------
student(StuId,StuName,StuAge,StuSex)学生表
teacher(TId,Tname)教師表
course(CId,Cname,C_TId)カリキュラム
sc(SId,S_CId,Score)成績表
----------------------------------------------------------
質問14:「1002」号の学生が勉強した課程と全く同じ他の学生の学号と名前を調べる
SELECT StuId,StuName FROM student WHERE StuId=
ANY(
SELECT SId FROM sc WHERE SId NOT IN
(SELECT SId FROM sc WHERE S_CId NOT IN
(SELECT S_CId FROM sc WHERE SId='1002'))
GROUP BY SId HAVING COUNT(*)=
(SELECT COUNT(*) FROM sc WHERE SId='1002')
)
AND StuId<>'1002';

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