首页新闻招聘找找看知识库

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

0
[待解决问题]

思路大概都懂
就是子查询那块理不清楚
谁能把
(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 这句的作用

rongz的主页 rongz | 菜鸟二级 | 园豆:202
提问于:2018-09-14 17:39
< >
分享
所有回答(2)
0

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

猴子哥 | 园豆:335 (菜鸟二级) | 2018-09-14 17:58

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

支持(0) 反对(0) rongz | 园豆:202 (菜鸟二级) | 2018-09-14 18:07

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

支持(0) 反对(0) kingyanru | 园豆:202 (菜鸟二级) | 2018-09-14 22:15

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

支持(1) 反对(0) 猴子哥 | 园豆:335 (菜鸟二级) | 2018-09-14 23:01

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

支持(0) 反对(0) kingyanru | 园豆:202 (菜鸟二级) | 2018-09-14 23:05

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

支持(0) 反对(0) 猴子哥 | 园豆:335 (菜鸟二级) | 2018-09-14 23:09

@kingyanru: 没事,相互学习嘛

支持(0) 反对(0) 猴子哥 | 园豆:335 (菜鸟二级) | 2018-09-14 23:10

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

支持(0) 反对(0) rongz | 园豆:202 (菜鸟二级) | 2018-09-15 01:16

@rongz 不用谢,相互学习嘛

支持(0) 反对(0) 猴子哥 | 园豆:335 (菜鸟二级) | 2018-09-15 07:36
0

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

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