Php 使用MYSQL查询排名排行榜
我遇到了一个问题,我的逻辑不是很好,所以我试图通过只使用查询来做到这一点 我有一个数据列表,在那里我需要得到他们的排名,但问题是,我需要得到前两个比我高的,最后两个比我低的 比如说Php 使用MYSQL查询排名排行榜,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,我遇到了一个问题,我的逻辑不是很好,所以我试图通过只使用查询来做到这一点 我有一个数据列表,在那里我需要得到他们的排名,但问题是,我需要得到前两个比我高的,最后两个比我低的 比如说 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
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
按分数顺序抓取记录
将计数器设置为0
对于从0开始的循环,您好,先生,我很感谢您的回答,我仍在尝试了解这个想法,我可以问一下我应该在yourID
中输入什么吗?如果我的id是7,我会将放在7-2和7+2之间
?当然可以,并将“yourTable”替换为您的表名:)