Mysql 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

Wesley13
• 阅读 1170

 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

1. 查询课程ID为‘01’ 的课程的成绩第2名到第3名的学生信息及该课程成绩

SELECT  d.*, c.排名, c.s_score, c.c_id FROM  ( SELECT a.s_id, a.s_score, a.c_id, @i:=@i+1 AS 排名 FROM score a,(SELECT @i:=0)s WHERE a.c_id='01' ORDER BY a.s_score DESC )c
LEFT JOIN 
    student d 
ON
    c.s_id = d.s_id
WHERE 
    排名 BETWEEN 2 AND 3

2. 查询课程ID为‘02’ 的课程的成绩第2名到第3名的学生信息及该课程成绩

SELECT
  d.*, c.排名, c.s_score, c.c_id 
FROM
  ( SELECT a.s_id, a.s_score, a.c_id, @j:=@j+1 AS 排名 FROM score a,(SELECT @j:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c
LEFT JOIN 
    student d 
ON
    c.s_id = d.s_id
WHERE 
    排名 BETWEEN 2 AND 3

3. 查询课程ID为‘03’ 的课程的成绩第2名到第3名的学生信息及该课程成绩

SELECT
  d.*, c.排名, c.s_score, c.c_id 
FROM
  ( SELECT a.s_id, a.s_score, a.c_id, @k:=@k+1 AS 排名 FROM score a,(SELECT @k:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c
LEFT JOIN 
    student d 
ON
    c.s_id = d.s_id
WHERE 
    排名 BETWEEN 2 AND 3

4. 联合

SELECT
  d.*, c.排名, c.s_score, c.c_id 
FROM
  ( SELECT a.s_id, a.s_score, a.c_id, @i:=@i+1 AS 排名 FROM score a,(SELECT @i:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c
LEFT JOIN 
    student d 
ON
    c.s_id = d.s_id
WHERE 
    排名 BETWEEN 2 AND 3
UNION
SELECT
  d.*, c.排名, c.s_score, c.c_id 
FROM
  ( SELECT a.s_id, a.s_score, a.c_id, @j:=@j+1 AS 排名 FROM score a,(SELECT @j:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c
LEFT JOIN 
    student d 
ON
    c.s_id = d.s_id
WHERE 
    排名 BETWEEN 2 AND 3
UNION
SELECT
  d.*, c.排名, c.s_score, c.c_id 
FROM
  ( SELECT a.s_id, a.s_score, a.c_id, @k:=@k+1 AS 排名 FROM score a,(SELECT @k:=0)s WHERE a.c_id='02' ORDER BY a.s_score DESC )c
LEFT JOIN 
    student d 
ON
    c.s_id = d.s_id
WHERE 
    排名 BETWEEN 2 AND 3
  1. 查询结果

Mysql 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
codedecent codedecent
2年前
这道SQL有一点...不一样?
原题目从课程表(课程号,课程名)学生表(学号,年龄,性别,课程号,分数)中查询出平均分大于60分的学生的学号及课程成绩最初尝试一开始不太会做,直接在网络上搜索答案,找到的却只有这样的题目答案sqlSELECTsid,AVG(sscore)FROMscoreGROUPBYsidHAVINGavg(sscore)60单表操作
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
SQL 经典题型解答(6)
SQL经典习题解答(6)23、统计各科成绩各分数段人数:课程编号,课程名称,\10085\,\8570\,\7060\,\060\及所占百分比SELECTt1.,t2.all_num,CONCAT(ROUND(t1.num/t2.all_num
Wesley13 Wesley13
3年前
SQL_50题
\1、查询“1001”课程比“1002”课程成绩高的所有学生的学号;selecta.Sfrom(selectS,scorefromscwhereC1001)a,(selectS,scorefromscwhereC1002)bwherea.scoreb.scoreanda.s
Wesley13 Wesley13
3年前
SQL题目
Student(S,Sname,Sage,Ssex)学生表      S:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C,Cname,T)课程表                   C,课程编号;Cname:课程名字;T:教师编号SC(S,C,score)成绩表              
Stella981 Stella981
3年前
React16.4 开发简书项目 从零基础入门到实战
第1章课程导学本章主要介绍学习react的重要性,课程的知识大纲,学习前提,讲授方式及预期收获。11课程导学第2章React初探本章主要讲解React项目的开发环境搭建,工程代码结构及React中最基础的语法内容,同时对前端组件化思想进行介绍。21React简介22React开发环境准备23工程目录
Wesley13 Wesley13
3年前
Oracle——分页查询
查询员工表中,工资排名在1020之间的员工信息。select  from(    selectrownumrn,employee_id,salary      from(        selectemployee_id,salary,last_name        fromem
Stella981 Stella981
3年前
Hive实战之学生课程成绩
基表:usemyhive;CREATETABLEcourse(idint,sidint,coursestring,scoreint);INSERTINTOcourseVALUES(1,1,'yuwe
Stella981 Stella981
3年前
Django多对多模型自定义中间媒介(through)在运行期的表现
使用自定义中间媒介来实现多对多关系的时候,主要的目的是在中间媒介中保存关系的特有属性。举个例子,比如学生与课程之间的关系就属于多对多的,而且当学生与课程建立关系之后随之还会产生附属的属性,如:成绩。如下例:<!lang:pythonclassStudent(models.Model):name