[英]MySQL get specific number from order of query result
我有一個名為users的表,在 users 表中有一個名為rating的列。 由於我正在創建排行榜,因此我按評分對前 100 名用戶進行排序。 排行榜的每個排名都簡單地用這樣的代碼顯示
<% let i = 0;
for(const row of users) { %>
<%= i; %>. <%= row.username; %>
<% } %>
然后排行榜就像這樣顯示
1. John
2. Doe
3. Mike
4. Peter
....
....
現在我還想顯示查看頁面的玩家的具體排名。 由於我有超過 5,000 個注冊帳戶,我想顯示如下內容:
Your leaderboard placing:
2854. Erik
但是我必須獲得 Erik 的 2854 排名,而不必遍歷整個用戶表才能訪問該數字。 我如何有效地做到這一點?
在 MySQL 中,有RANK()
操作使用ORDER BY
計算行的排名。 例如:
SELECT
username, rating,
RANK() OVER (
ORDER BY rating
) rank
FROM
leaderboard;
output 將有 3 列:用戶名、評級和排名。 排名列是從rating
計算的排名
您可以從這些鏈接中找到更多信息:
- - 編輯 - -
要獲得特定用戶的排名,我認為我們將在排名表上運行 WHERE 子句。
WITH ranking AS
(SELECT
username, rating,
RANK() OVER (
ORDER BY rating
) rank
FROM
leaderboard;
)
SELECT * FROM ranking WHERE username = "Erik"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.