mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数...

查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数

好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的

——需要分析题目,查询的是,查询的是(1)学生的信息(2)满足条件的学生的'课程分数'(不在学生表里)需要从另外一张表得来(3)条件是-" 01 "课程比" 02 "课程成绩高(成绩表就满足)

因此就是,需要获得学生的信息,那里满足该学生的01课程比02课程高!!!需要展示该学生的信息,及其01与02的分数~~~开始来

1、找出有01成绩的同学成绩信息

SELECT * from sc WHERE sc.CId='01'

查出结果如下:

ad1bd4901d95d55a39b172bf4ee4fd91.png

2、找出有02成绩的同学成绩信息

SELECT * from sc WHERE sc.CId='02'

9f0c131343acc341ff8320c5704989ce.png

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

50166ad0826e0590d20b47621f4094db.png

完美,接下来嫁接条件——行过滤——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

82c70299bb2422e855af4a44ed07f280.png

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

c62f1dd10bcb7d02de4ac2889b53f565.png

6、开心。然后咱们假装这是一个新表结果,又给命名,为r,和student一查,查出满足

e140ba8a2e2fa3dea894bb82c7aab87b.png

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

64f1cf119de829ba53ec8a7d69b44e97.png

大概的就查出来了,(⊙o⊙)…菜宝宝加油

【等等,这里仿佛用到了join on,还是right join on,那它跟left join,outer join,inner join ……各种方向的join 有什么区别,分别应用有撒不同呢,小菜菜下节试着分析解读一下】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值