表中的“下一个”和“上一个”的SQL是什么?
发布时间:2020-12-12 06:25:02 所属栏目:MsSql教程 来源:网络整理
导读:我有一张表,其中每个都有一个与之相关联的日期.如果我有一个日期与一个项目相关联,我如何使用SQL查询数据库以获得表中的“先前”和“后续”项目? 不可能简单地添加(或减)值,因为日期之间没有规则的差距. 一个可能的应用程序将是相册或博客Web应用程序中的“
我有一张表,其中每个都有一个与之相关联的日期.如果我有一个日期与一个项目相关联,我如何使用SQL查询数据库以获得表中的“先前”和“后续”项目?
不可能简单地添加(或减)值,因为日期之间没有规则的差距. 一个可能的应用程序将是相册或博客Web应用程序中的“上一个/下一个”链接,其中底层数据在SQL表中. 我认为有两种可能的情况: 首先,每个日期是唯一的: 样品数据: 1,3,8,19,67,45 当提供8作为参数时,什么查询(或查询)将给出3和19? (或行3,19).请注意,并不总是返回三行 – 在序列的末尾将丢失一行. 其次,如果有一个单独的唯一键来排序元素,什么是查询返回集合’周围’一个日期?预期的顺序是按日期然后键. 样品数据: (key:date) 1:1,2:3,3:8,4:8,5:19,10:19,11:67,15:45,16:8 ‘8’的查询返回集合: 2:3,16:8,5:19 或什么查询生成表: key date prev-key next-key 1 1 null 2 2 3 1 3 3 8 2 4 4 8 3 16 5 19 16 10 10 19 5 11 11 67 10 15 15 45 11 null 16 8 4 5 表格顺序不重要 – 只是下一个键和上一个键字段. TheSoftwareJedi和Cade Roux都有解决方案,适用于我昨天发布的数据集.对于第二个问题,这两个数据集似乎都失败了: (key:date) 1:1,16:8 预期的顺序是按日期然后键,所以一个预期的结果可能是: 2:3,5:19 另一个: key date prev-key next-key 1 1 null 2 2 3 1 3 3 8 2 4 4 8 3 16 5 19 16 10 10 19 5 11 11 67 10 15 15 45 11 null 16 8 4 5 表格顺序不重要 – 只是下一个键和上一个键字段. 解决方法选择max(element)从Data Where Element < 8 联盟 选择min(element)从Data Where Element> 8但是一般来说,将sql用于面向集合的操作而不是迭代操作更为有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |