首页 新闻 会员 周边

mysql有一道子查询练习题不太懂,求大神讲解

0
[已解决问题] 解决于 2019-03-08 01:32

思路大概都懂
就是子查询那块理不清楚
谁能把
(select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 0,1)
给我梳理一下
着重讲一下where s2.course_id = s1.course_id 这句的作用

猫为什么爱吃鱼的主页 猫为什么爱吃鱼 | 初学一级 | 园豆:118
提问于:2018-09-14 17:39
< >
分享
最佳答案
0

哈哈,这个sql有点意思,我简单理解了一下,应该是取每一个course(课程)的分数在前两位的所有数据取出来
(select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 0,1) 这个语句就是取每一门课的最高分

奖励园豆:5
程序员修炼之旅 | 小虾三级 |园豆:776 | 2018-09-14 17:58

where s2.course_id = s1.course_id 这句对应关系搞不太清楚
你知不知道这句作用是啥啊

猫为什么爱吃鱼 | 园豆:118 (初学一级) | 2018-09-14 18:07

这个as的作用是什么啊?菜鸟入坑,求解答

kingyanru | 园豆:202 (菜鸟二级) | 2018-09-14 22:15

@kingyanru: as 就是(表score )的一个别名

程序员修炼之旅 | 园豆:776 (小虾三级) | 2018-09-14 23:01

@猴子哥:谢谢,新手入坑,因为as可以省略一下忘记了。

kingyanru | 园豆:202 (菜鸟二级) | 2018-09-14 23:05

@rongz: 我用比较通俗的白话文给你说,看你能不能够听懂:
1、数据查询的时候,其实也就遍历一条一条的去数据匹配数据获取符合要求的数据
2、这而的where 你就可以这样理解,当遍历到某一条数据时,通过子查询获取该数据的course_id 分数最高的两个分数
3、最后在把查询子查询出来的最两个最高分作为一个临时表,在和score 进行关联查询
不知道这样说,你能够明白不?

程序员修炼之旅 | 园豆:776 (小虾三级) | 2018-09-14 23:09

@kingyanru: 没事,相互学习嘛

程序员修炼之旅 | 园豆:776 (小虾三级) | 2018-09-14 23:10

@猴子哥: 哈哈哈 我明白了 看你第二条说到遍历想了一下就感觉想通了 多谢了啊

猫为什么爱吃鱼 | 园豆:118 (初学一级) | 2018-09-15 01:16

@rongz 不用谢,相互学习嘛

程序员修炼之旅 | 园豆:776 (小虾三级) | 2018-09-15 07:36
其他回答(1)
0

这个应该是多表查询,通过s2 的课程id和s1中的课程id匹配,查询对应的成绩

kingyanru | 园豆:202 (菜鸟二级) | 2018-09-14 22:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册