我想根据特定的条件选择一些行,然后从该集合中选择一项,以及它之前和之后的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。
https://stackoverflow.com/questions/3672283
复制相似问题