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

2023-11-24

以前很可能已经问过这样的问题,但我想不出要搜索的术语。

我正在开发一个照片库应用程序,想要显示 9 个缩略图,显示当前显示的照片的上下文(在 3x3 网格中,当前照片位于中心,除非当前照片位于显示的前 4 张照片中) ,在这种情况下,例如,如果当前照片是第二张,我想选择照片 1 到 9)。例如,给定一个包含带有 id 的照片列表的相册:

1, 5, 9, 12, 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, 18, 19, 20, 21

我一直在思考以下内容:

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

但在 id 不连续的情况下(如上例所示),或者当前照片之前没有足够照片的情况下,这不起作用。

有什么想法吗?

Thanks,

Dom

附注如果有任何不清楚的地方请发表评论,我会澄清问题。如果有人能想到一个更有用的标题来帮助其他人将来找到这个问题,那么也请发表评论。


可能可以只使用 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

编辑:按照建议,将 UNION 两侧的限制增加到 10勒多菲耶.

编辑2:按照多米尼克的建议进行修改以更好地反映最终实施。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 选择特定行周围的“窗口” 的相关文章

  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • MySQL 错误 1172 - 结果包含多行

    在存储过程中运行查询时 我从 MySQL 收到此错误 错误代码 1172 结果包含多行 我理解错误 我正在做一个SELECT INTO var list 因此查询需要返回单行 当我使用LIMIT 1 or SELECT DISTINCT 错
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • Reporting Services 在哪里存储其日志文件

    最相关的谷歌结果似乎表明 为了访问日志 我们必须将您自己的日志表部署到数据库并制作报告服务写入它 http technet microsoft com en us library ms157403 aspx 简而言之 Reporting S
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • 如何通过 SQL 表关联 SQL 中的实体

    我是数据库设计的初学者 我需要为项目创建数据库 我可以用面向对象的术语解释我想要做什么 值得庆幸的是 数据库专家会很友善地向我解释如何在数据库方面处理这个问题 我想创建一个与位置实体 州 城市 有关系的用户 ID 名称 实体 所以在编程语言
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • 使用子查询 select 创建新表

    我试图从子查询选择创建一个新表 但出现以下错误 附近的语法不正确 SELECT INTO foo FROM SELECT DATEPART MONTH a InvoiceDate as CalMonth DATEPART YEAR a In
  • 解析带下划线的 SQL Server 数字文字

    我想知道它为什么有效以及为什么它不返回错误 SELECT 2015 11 Result 11 2015 第二种情况 SELECT 2 1 a a 2 1 检查元数据 SELECT name system type name FROM sys
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my

随机推荐

  • Blazor 路线在同一页面发生变化

    我当前的设置 NET Core 3 预览版 6 Blazor 服务器端渲染 在 Blazor 页面中 我有类似以下内容 page page page page Id With Parameter public string Id get s
  • 如何在RDLC中设置参数值

    我在报告中添加了两个用于日期范围的文本框 为了填充文本框中的值 我为文本框设置了参数 现在 日期范围来自名为 DateRange 的表单 该表单具有两个 DateTimePickers 如何将rdlc中文本框的值设置为等于这些DataTim
  • NSInteger 计数乘以 4?

    我不明白为什么这个 NSInteger 计数器会增加到数据库行真实值的 4 倍 也许这很愚蠢 但我真的不明白 到目前为止谢谢 NSInteger i i 0 for NSDictionary teil in gText NSLog teil
  • 相当于连接 Sum 的字符串

    我想要一个查询在第一行输出左表中的 ID 和连接表中的描述 Schema person id int role id int description varchar 100 personrole personid int roleid in
  • jquery ui 对话框在按钮和内容 div 上使用相同的类打开多个对话框

    我想通过在按钮和内容 div 上使用相同的类来打开多个对话框 下面的方法有效 但仅适用于第一次 jQuery helpDialog hide jQuery helpButton click function jQuery this next
  • 如何阻止 g++ 链接不需要的异常处理代码?

    我正在使用为arm eabi 编译的GCC G 开发嵌入式应用程序 由于资源限制 我尝试禁用标准 C 异常处理 我正在用 fno exceptions 编译代码 nostartfiles ffreestand 当一个类的全局实例存在 并且该
  • 为什么 LINQ to SQL 实体关联在插入新记录时会创建新(重复)行?

    我正在尝试使用 LINQ to SQL 插入一个新实体 并且实体与用户实体关联 新实体的插入成功 但我现有的用户实体被插入 就好像它是新用户一样 代码如下所示 var someEntity new Entity someEntity Use
  • InterWorks 在其 Workbook SDK 中使用什么 Tableau API?

    InterWorks 有一个 Workbook SDK 作为其 Power Tools for Tableau 产品的一部分 有谁知道他们如何能够做到这一点 SDK 可以在没有 Tableau Server 的情况下访问工作簿 因此我认为它
  • 如何在iOS平台上实现快速图像滤镜

    我正在开发 iOS 应用程序 用户可以在其中应用一组特定的照片滤镜 每个滤镜基本上都是一组具有特定参数的 Photoshop 操作 这些行动是 级别调整 亮度 对比度 色相饱和度 单个和多个叠加 我在代码中使用循环遍历图像中所有像素的算术表
  • 转换 JSON 格式(分组依据)

    我有这样的 JSON 对象 name cat value 17 group animal name dog value 6 group animal name snak value 2 group animal name tesla val
  • 递归搜索非二叉树中的节点

    我想在非二叉树中搜索一个项目 任何节点都可以有 n 个子节点 并立即退出递归 所讨论的节点可以是任何节点 而不仅仅是叶子节点 这是我的代码 但我没有得到完整的搜索 private nNode recursiveSearch data gi
  • 在 Django 中运行 PHP

    有没有办法在 django 中运行 PHP 脚本 我在 TinyMCE 中有一个运行 PHP 脚本的插件 并且它能够使用 XAMPP 的 Apache 工作 然而 Django确实支持PHP脚本的运行 因此该插件无法工作 我想知道是否有办法
  • PHPExcel 合并单元格上的行自动高度/换行文本

    有没有在 PHP Excel 中设置行自动高度的好方法 到目前为止 我已经看到您可以使用固定高度 您可以预先指定您想要的行的高度 我还发现 如果您不使用合并单元格 则可以使用自动高度 PHPExcel 合并单元格的动态行高 如何在phpex
  • 修复生成条形码时“GDI+ 中发生一般错误”的问题

    我正在用 C 编写一个条形码生成器 我可以将条形码生成为位图 并可以在 Picturebox WindowsForms 中显示它们 另一方面 我无法将条形码保存为 gif 或 jpeg 文件 我的条形码是位图文件 这是我的代码 Bitmap
  • Safari/Chrome 开发者工具调试 CSS 覆盖

    Safari Chrome 开发者工具通过删除 CSS 规则来指示 CSS 规则被其他内容覆盖 如图所示 有时我发现自己无法从 CSS 文件中找出导致该规则被忽略的原因 但 Safari 本身肯定会在它击穿它时知道这一点 有没有办法知道什么
  • 客户端 (JS) 和服务器 (PHP) 中的 AES 256

    我尝试使用相同类型的操作 即 AES 256 在服务器端和客户端上加密和解密数据 在服务器上我使用 PHP 客户端我使用 CryptoJS 到目前为止我只能在服务器上加密和解密客户端 请参阅代码 JS
  • R RPostgreSQL 使用 SSL 连接到远程 Postgres 数据库

    我正在尝试使用 R 从内部连接到远程 PostgreSQL 数据库RPostgreSQL包 并且我收到似乎与连接的 SSL 设置相关的错误 我已经验证我可以使用命令行进行连接psql 所以我知道连接是有效的并且可以从我的计算机访问 我在 R
  • 尝试运行 flutter 应用程序时“无法连接到lockdownd”

    我正在关注开始使用教程 我可以安装一切 flutter doctor返回所有复选标记 但最后有一条消息 idevice id 返回错误 错误 无法连接到lockdownd 错误代码 2 如果我尝试使用运行该应用程序 则会出现相同的消息flu
  • 我可以像其他库一样将 JointJS 作为 AngularJS 模块注入吗?

    我有一个带有角度的应用程序 我需要使用这个库http www jointjs com 所以我下载了 joint min js 和 joint min css 并将它们的路由放在 index html 中 但我不知道在 app js 中放入什
  • SQL 选择特定行周围的“窗口”

    以前很可能已经问过这样的问题 但我想不出要搜索的术语 我正在开发一个照片库应用程序 想要显示 9 个缩略图 显示当前显示的照片的上下文 在 3x3 网格中 当前照片位于中心 除非当前照片位于显示的前 4 张照片中 在这种情况下 例如 如果当