2

私はmysqlを初めて使用します。グーグルで検索しましたが、満足のいく答えが見つかりませんでした。

基本的に、私は学生にランクを提供する必要があります。考慮すべき唯一のことは、与えられた例で説明されています。テーブルstudent(id、marks、rank)を作成します。ここで、エントリを

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

ここでは、idのランク:4と5が最初である必要があります。
idのランク:3、6、および7は3番目である必要があります。
idのランク:1と2は6番目である必要があります。
クエリはどうあるべきですか?

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ステートメント?

...
...
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 に答える