查詢" 01 "課程比" 02 "課程成績高的學生的信息及課程分數
好的,第一道題,剛開始做,就栽了個跟頭,爽歪歪,至於怎么栽跟頭的
——需要分析題目,查詢的是,查詢的是(1)學生的信息(2)滿足條件的學生的'課程分數'(不在學生表里)需要從另外一張表得來(3)條件是-" 01 "課程比" 02 "課程成績高(成績表就滿足)
因此就是,需要獲得學生的信息,那里滿足該學生的01課程比02課程高!!!需要展示該學生的信息,及其01與02的分數~~~開始來
1、找出有01成績的同學成績信息
SELECT * from sc WHERE sc.CId='01'
查出結果如下:

2、找出有02成績的同學成績信息
SELECT * from sc WHERE sc.CId='02'

3、以上兩種結果需要滿足一定條件(1)SId要一致【同一人】(2)且01.score>02.score
然后咱們胡亂一操刀:
SELECT* FROM (SELECT * from sc WHERE sc.CId='01')as a,(SELECT * from sc WHERE sc.CId='02')as b

完美,接下來嫁接條件——行過濾——where
然后又一操刀
SELECT* FROM (SELECT * from sc WHERE sc.CId='01')as a,(SELECT * from sc WHERE sc.CId='02')as b WHERE a.SId=b.SId AND a.score>b.score

4、普天同慶,好像又離開心有丟丟遠,接下來要干嘛,我也忘了~
5、看着拿到了SId,score,score1,當然是存下來,為了后面做准備,搞事
SELECT a.SId,a.score class1,b.score class2 FROM (SELECT * from sc WHERE sc.CId='01')as a,(SELECT * from sc WHERE sc.CId='02')as b WHERE a.SId=b.SId AND a.score>b.score

6、開心。然后咱們假裝這是一個新表結果,又給命名,為r,和student一查,查出滿足

SELECT * from student RIGHT JOIN
(SELECT a.SId,a.score class1,b.score class2 FROM (SELECT * from sc WHERE sc.CId='01')as a,(SELECT * from sc WHERE sc.CId='02')as b WHERE a.SId=b.SId AND a.score>b.score)r
ON student.SId=r.SId

大概的就查出來了,(⊙o⊙)…菜寶寶加油
【等等,這里仿佛用到了join on,還是right join on,那它跟left join,outer join,inner join ……各種方向的join 有什么區別,分別應用有撒不同呢,小菜菜下節試着分析解讀一下】
