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