首页 > 数据库技术 > 详细

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

时间:2020-03-20 15:23:37      阅读:1088      评论:0      收藏:0      [点我收藏+]

 查询所有课程的成绩第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

5. 查询结果

技术分享图片

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

原文:https://www.cnblogs.com/PersonalDiary/p/12531591.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!