如何解决SQL在特定行周围选择“查找”
可能只使用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
编辑:根据 建议,在联盟的两侧限制都增加到10个。
编辑2:如Dominic所建议,进行了修改以更好地反映最终实施。
解决方法
以前很可能会问过这样的问题,但我想不出要搜索的术语。
我正在使用照片库应用程序,并且想要显示9个缩略图,以显示当前照片的上下文(在3x3网格中,当前照片位于中间,除非当前照片在所显示的前4张照片中,在这种情况下,例如,如果当前照片是第二张照片,我想选择照片1至9)。例如,给定一个包含ID的照片列表的相册:
1,5,9,12,13,13,18,19,20,21,22,23,25,26
如果当前照片是19,我还想查看:
9,12,13,18,19,20,21,22,23
如果当前照片是5张,我还想查看:
1,5,9,12,13,13,18,19,20,21
我一直在考虑以下方面:
SELECT *
FROM photos
WHERE ABS(id - currentphoto) < 5
ORDER BY id ASC
LIMIT 25
但这不适用于ID是非连续ID的情况(如上面的示例),或者不适用于当前照片之前的照片。
有什么想法吗?
谢谢
ps如果不清楚,请发表评论,我将澄清这个问题。如果有人能想到一个更有用的标题来帮助其他人将来找到这个问题,那么也请发表评论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。