首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何选择任意行的相邻行(在sql或postgresql中)?

如何选择任意行的相邻行(在sql或postgresql中)?
EN

Stack Overflow用户
提问于 2010-09-09 06:10:56
回答 5查看 9.6K关注 0票数 21

我想根据特定的条件选择一些行,然后从该集合中选择一项,以及它之前和之后的5行。

因此,选择主键为7的行和附近的行:

select primary_key from table where primary_key > (7-5) order by primary_key limit 11;

2
3
4
5
6
-=7=-
8
9
10
11
12

但是,如果我一开始只选择某些行,我就失去了使用主键的数字方法(假设键的顺序没有任何间隙),并且需要另一种方法来在某个目标行之前和之后获得最接近的行。

这样的select的主键输出可能看起来更随机,因此不太容易进行数学定位(因为一些结果会被过滤掉,例如使用where active=1):

select primary_key from table where primary_key > (34-5) 
    order by primary_key where active=1 limit 11;

30
-=34=-
80
83
100
113
125
126
127
128
129

请注意,由于where条件示例导致的主键间隙(例如,因为有许多不活动的项),我不再获得上面最接近的5和下面的5,取而代之的是下面最接近的1和上面最接近的9。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3672283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档