小菜菜mysql練習解讀分析1——查詢" 01 "課程比" 02 "課程成績高的學生的信息及課程分數


查詢" 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 有什么區別,分別應用有撒不同呢,小菜菜下節試着分析解讀一下】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM