在表中找到学生的等级

时间:2012-06-18 14:10:17

标签: mysql sql

我是mysql的新手。我用谷歌搜索,但找不到任何令人满意的答案。

基本上,我需要为学生提供排名。在给出的例子中解释了唯一要考虑的事情。 让我们有一个表学生(id,标记,排名)。 现在让条目

id    marks
1      2
2      2
3      3
4      4 
5      4
6      3
7      3

这里id的等级:4和5应该是FIRST 身份的等级:3,6和7应该是第三 id的等级:1和2应该是第六 该查询应该是什么?

2 个答案:

答案 0 :(得分:1)

考虑在应用程序端实现排名。如果确实需要在MySQL端,可以使用user-defined variables

SET @rank = 1, @seq = 1, @last = null;
SELECT *, @rank := if(@last = marks, @rank, @seq) AS rank, @seq := @seq + 1, @last := marks FROM test ORDER BY marks DESC;

答案 1 :(得分:-1)

也许是个案陈述?

...
...
CASE
    WHEN marks=4 then rank='First'
    WHEN marks=3 then rank='Third'
    WHEN marks=2 then rank='Sixth'
    ELSE rank='Unk'
END CASE
...
...

编辑:如果lanzz是正确的,也许这很有用:

Generate standard competition rankings from a list of scores