SQL在特定行周围选择“窗口”
发布时间:2021-03-30 20:05:25 所属栏目:MsSql教程 来源:网络整理
导读:很可能以前曾经问过像这样的问题,但我想不出要搜索的术语. 我正在制作一个照片库应用程序,并希望显示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所建议的那样. (编辑:均轻资讯网_我爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server-2005 – 永久删除表时回收SQL Server 2005数据库
- 如何在LINQ to Entity Framework中使用SQL通配符
- sql-server – 使用SSIS,如何找到人口最多的城市?
- sql – 重新排序有序列表
- 如何从SQL Server中的分组值返回动态列(存储过程)
- 如何从降序开始从Firebase数据库中检索数据?
- sql-server – 如何在SQL Server数据库中设计用户/角色架构
- sql-server – SQL Server支持最大扇区大小为4096字节
- 如何在单个数据库中将Hibernate用于两个不同的模式
- sql-server – 高效插入具有聚簇索引的表
站长推荐
热点阅读

