从数据库中选择特定记录周围的记录

时间:2015-05-13 11:52:10

标签: mysql sql

对于一个模糊的标题感到抱歉,但如果我知道如何用英语表达这个 - 会用谷歌:)所以这就是问题所在:假设我们有一个问题:

SELECT A.*, B.* FROM ... JOIN ... ORDER BY WHATEVER

我基本上需要做的是将此结果集缩小到具有特定 A.id +一些相邻记录的记录。

例如,如果我们的结果集返回A.id =

1, 2, 3, (4, 5, 6, [7], 8, 9, 10), 11, 12

我基本上需要(括号)中的部分,包括目标记录[7]。

由于可能涉及简单或复杂的查询且排序可能不同,我不能只说“给我记录ID> = 4和id< = 10”所以我需要某种更复杂的解决方案

一个(也许)更清晰,更现实的例子:

  • 每页有50张照片
  • 订购和过滤
  • 当您点击任何页面上的照片时,应该会在所选过滤器的“分页”中点击所选照片周围的其他照片导航
  • 过滤器是会话存储的,因此它们不是问题

1 个答案:

答案 0 :(得分:0)

您可以这样做:

select t.*
from table t join
     (<your query here>) recs
     on t.id between recs.id - 3 and recs.id + 3;