我想根据特定的标准 Select 一些行,然后从该集合中 Select 一个条目,以及前后的5行.
现在,如果表上有一个主键,我可以用数字表示(例如,主键的数字比目标行的键小5,比目标行的键多5).
因此, Select 主键为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 某些行作为开始,我就失go 了使用主键的数字方法(这是假设键在顺序上没有任何间隙),并且需要另一种方法来获取特定目标行前后最近的行.
这样一个 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条件(for example becaseu there are many inactive items)导致主键之间的间隙,我不再得到最接近的上面5和下面5,而是得到最接近的下面1和上面9.