2

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

基本上,我需要为 student 提供排名。在给定的示例中解释了唯一要考虑的事情。让我们有一个表 student(id,marks,rank)。现在让条目成为

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

这里 id 的等级:4 和 5 应该是 FIRST。
id 的等级:3、6 和 7 应该是第三个。
id 的等级:1 和 2 应该是 SIXTH。
应该是什么查询?

4

2 回答 2

1

考虑在应用程序端实施排名。如果确实需要在 MySQL 端,可以使用用户定义的变量

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;
于 2012-06-18T14:56:13.167 回答
-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 是正确的,也许这很有用:

从分数列表生成标准比赛排名

于 2012-06-18T14:33:31.693 回答