如何按主键选择行,按其他列选择“上方”一行和“下方”一行?

2024-03-02

好的,我有一个“用户”表,其中包含“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(使用前将#替换为@)

如何按主键选择行,按其他列选择“上方”一行和“下方”一行? 的相关文章

随机推荐