加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

SQL在特定行周围选择“窗口”

发布时间:2021-03-31 17:46:44 所属栏目:编程 来源:网络整理
导读:很也许早年曾经问过像这样的题目,但我想不出要搜刮的术语. 我正在建造一个照片库应用措施,并但愿表现9个缩略图,表现当前正在表现的照片的上下文(在3×3网格中,当前照片位于中央,除非当前照片表现在前4张照片中,在这种环境下,假如当前照片是第二张,我想选择照

很也许早年曾经问过像这样的题目,但我想不出要搜刮的术语.

我正在建造一个照片库应用措施,并但愿表现9个缩略图,表现当前正在表现的照片的上下文(在3×3网格中,当前照片位于中央,除非当前照片表现在前4张照片中,在这种环境下,假如当前照片是第二张,我想选择照片1到9).譬喻,给定一个包括带有ID的照片列表的相册:

1,5,9,12,13,18,19,20,21,22,23,25,26

假如当前照片是19,我还想查察:

9,23

假如当前照片为5,我还要查察:

1,21

我一向在想一些相同的对象:

SELECT *
FROM photos
WHERE ABS(id - currentphoto) < 5
ORDER BY id ASC 
LIMIT 25

但这不合用于ids长短持续的(如上例所示),可能当前照片之前照片不敷的环境.

有什么设法吗?

感谢,

大教堂

附:假若有任何不清晰的处所请颁发评述,我会澄清这个题目.假若有人能想到一个更有效的问题来辅佐其他人未来找到这个题目,那么请评述.

办理要领

也许只需行使UNION,然后在表现功效的进程代码中修剪特另外功效(由于这将在非边沿环境下返回20行):
(SELECT 
     * 
FROM photos
   WHERE ID < #current_id#
   ORDER BY ID DESC LIMIT 10)
UNION
  (SELECT *
   FROM photos
   WHERE ID >= #current_id#
   ORDER BY ID ASC LIMIT 10)
ORDER BY ID ASC

编辑:正如le dorfier所提议的那样,UNION两边的限定增进到10.

编辑2:修改以更好地反应最终实验,如Dominic所提议的那样.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读