Mysql 查詢所有課程的成績第2名到第3名的學生信息及該課程成績


 查詢所有課程的成績第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. 查詢結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM