1

mysqlテーブルにランクを付ける必要があります。マークが45、55、55、65、75のテーブル名テストがあるとすると、75はランク1になります。

元のテーブル

name  marks
tom   55
joe   56
sally 57

必要な結果

name  marks rank
tom   55     3
joe   56     2 
sally 57     1 
4

3 に答える 3

3

ユーザーをマークで並べ替えてから、その位置をカウントする必要があります。これは、次の方法で行うことができます。

SET @rownum := 0;

SELECT @rownum := @rownum+1 AS rank, name, marks
FROM your_table 
ORDER BY marks DESC

インスピレーション/ソース

于 2012-05-31T12:18:21.960 に答える
0

このクエリを試してください -

SELECT t.* FROM (
  SELECT t1.*, @r:=@r+1 rank FROM (SELECT * FROM table ORDER BY marks DESC) t1,
  (SELECT @r:=0) t2
) t
ORDER BY marks
于 2012-05-31T12:18:58.637 に答える
-1

私はやや同じ質問をしましたが、答えは同じです

ご不明な点がございましたら、お知らせください。

テーブルクエリの場合は次のようになります

SELECT name, marks, 
(SELECT COUNT(distinct u2.marks) FROM myTable u2 
WHERE 
u2.marks > u1.marks) + 1 AS rank FROM myTable u1
ORDER BY rank DESC

このクエリmyTableでは、テーブル名に置き換えます。

デモ 1 &デモ 2を参照してください。

また、結果、ランク3のメモ。

ランク 4 ではなくランク 5 が必要な場合は、COUNT(*)代わりに を使用しCOUNT(distinct u2.marks)ます。

于 2012-05-31T12:15:41.727 に答える