MySQL结果排名

MySQL结果排名,mysql,Mysql,我有一个名为enrol的mysql表,包含以下列:学生、科目、分数、年份: student subject mark year John Mathematics 70 2013 Peter Mathematics 87 2013 James Mathematics 69 2013 Paul Mathematics 50 2013 Judas Mathematics 77 2013 Jude Mathematics 99 2013 Michael M

我有一个名为enrol的mysql表,包含以下列:学生、科目、分数、年份:

student subject mark    year
John    Mathematics 70  2013
Peter   Mathematics 87  2013
James   Mathematics 69  2013
Paul    Mathematics 50  2013
Judas   Mathematics 77  2013
Jude    Mathematics 99  2013
Michael Mathematics 48  2013
Matthew Mathematics 50  2013
我想获得分数的排名,比如John WHERE subject='Mathematics'和year='2013'


如何编写此SQL语句?

我自己对MySQL不是很好,但如果我正确地回答了您的问题,应该如下所示:

SELECT * FROM 'enrol' WHERE student='John' AND subject='Mathematics' AND year='2013' ORDER BY 'mark' DESC

这将为一个叫约翰的人选择结果,他从事数学和2013年的工作。

如果我理解正确的话

SELECT student
     , rank 
  FROM 
     ( SELECT x.*
            , IF(@prev<>mark,@i:=@i+1,@i:=@i) rank
            , @prev:=mark 
         FROM my_table x
            , (SELECT @i:=0,@prev:='') vars 
        WHERE year = 2013 
          AND subject = 'mathematics' 
        ORDER 
           BY mark DESC
     ) n 
 WHERE student = 'John';