分析:
1,先查詢出01號同學學習的課程
SELECT C FROM sc WHERE S='01'
2,查詢學習該相關課程的同學編號
SELECT S FROM sc WHERE C in (SELECT C FROM sc WHERE S='01')
可以看到,我們分別查詢了3次,所以出現多個結果,因為是or關系,所以每個選擇了1、2、3課程的同學都全部取出,
3,現在需要將出現次數為3的編號取出
SELECT S FROM sc WHERE C in (SELECT C FROM sc WHERE S='01') GROUP BY S HAVING COUNT(S) =3
看到編號為1、2、3、4的同學選了與01號同學一致的課程
4,與student表進行連表查詢,取出相關信息
SELECT a.* FROM student a LEFT JOIN sc b ON a.S = b.S WHERE b.S in ( SELECT S FROM sc WHERE C in (SELECT C FROM sc WHERE S='01') GROUP BY S HAVING COUNT(S) =3) GROUP BY a.S