Mysql
獲取使用者在評分錶中的排名
我有一個非常簡單的 MySQL 表,用於保存高分。它看起來像這樣:
Id Name Score
到目前為止,一切都很好。問題是:我如何獲得使用者排名?例如,我有一個使用者
Name
或Id
想要獲得他的排名,其中所有行都是按順序降序排列的Score
.一個例子
Id Name Score 1 Ida 100 2 Boo 58 3 Lala 88 4 Bash 102 5 Assem 99
在這種情況下,
Assem
的排名將是 3,因為他獲得了第三高的分數。查詢應返回一行,其中(僅)包含所需的排名。
SELECT id, name, score, FIND_IN_SET( score, ( SELECT GROUP_CONCAT( score ORDER BY score DESC ) FROM scores ) ) AS rank FROM scores
給出了這個列表:
id name score rank 1 Ida 100 2 2 Boo 58 5 3 Lala 88 4 4 Bash 102 1 5 Assem 99 3
獲得單人分數:
SELECT id, name, score, FIND_IN_SET( score, ( SELECT GROUP_CONCAT( score ORDER BY score DESC ) FROM scores ) ) AS rank FROM scores WHERE name = 'Assem'
給出這個結果:
id name score rank 5 Assem 99 3
您將進行一次掃描以獲取分數列表,然後進行另一次掃描或嘗試對它做一些有用的事情。列上的索引
score
將有助於大型表的性能。