MySQL结果排名
我有一个名为enrol的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
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';