簡體   English   中英

使用 MYSQL 查詢對排行榜進行排名

[英]Ranking Leaderboard using MYSQL Query

我遇到了一個問題,我的邏輯不太好,所以我試圖通過僅使用查詢來做到這一點,

我有一個數據列表,我需要在其中獲得他們的排名,但問題是,我需要獲得前兩個對我而言較高的人以及后兩個對我而言較低的人。

例如

id| name |   score
1   bob       20
2   anna      10
3   jose      30
4   boni      30
5   lea       100
6   leo       10
7   qwertina  90
8   josh      50
9   king      40
10  queen     10

假設我作為用戶的 id 值為7

所以如果我登錄並且我的 id 是7

我需要得到輸出

id| name |   score
5   lea       100
6   leo       10
7   qwertina  90
8   josh      50
9   king      40

這在mysql查詢中可能嗎? 任何幫助將不勝感激,我真的被這個問題困住了。

你似乎基於 id 的邏輯,這很奇怪,但我們在這里:

SELECT id, name, score
FROM yourTable
WHERE id BETWEEN yourId-2 AND yourId+2

不確定唯一的 MySQL 解決方案,但在偽 php 代碼中

Grab records ordered by score
set a counter at 0
for loop starting 0, <= count of results
  if the id your id? 
    if the loop index < 3 ? // there aren't two people ahead of you
      return rows 0 to 4
    elseif the loop index > count -3 ? // you are one of the last
      return rows count -4 to count
    else
      return rows index -2 to index + 2  // you have 2 above and below you

試試看,如果你卡住了,請發布你的 PHP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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