好的,我有一个“用户”表,其中包含“id”列和“分数”列。 'id'是主键,'score'可以是任何正整数,并且用户可以具有相同的分数。
我需要选择 3 行:
- “目标用户”,即“id”的单行
- 当表格按“分数”排序时,目标用户正上方的用户
- 当表格按“分数”排序时,目标用户正下方的用户
关于如何在 SQL 中执行此操作有什么建议吗?谢谢!
UPDATE
抱歉,我现在意识到我需要对如何处理具有相同分数的多行做出更多选择。我决定排除并列分数,因此我正在寻找目标用户得分次高和次低的用户。
样本数据:
id score
1 0
2 5
3 9
4 5
5 5 *
6 5
7 8 *
8 3 *
因此,如果我的目标用户的 id = 5,我想要 id 为 7、5 和 8 的行
首先,查询该特定用户的分数:
select score
from users
where id = 42
假设用户 42 的分数是 6。然后您可以查询下一个用户,如下所示:
select name
, score
from users
where score > 6
order by
score
limit 1
之前的用户喜欢:
select name
, score
from users
where score < 6
order by
score desc
limit 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)