簡體   English   中英

MySQL 從查詢結果的順序中獲取特定的數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM