android-SQLite中LEAD和LAG的替代方法

android-SQLite中LEAD和LAG的替代方法,第1张

概述我需要找到一种替代LAG和LEAD的方法,以便在SQLite中查找我的表中的上一个和下一个条目,因为所使用的版本不支持这些(更新不是一种选择).但是我也不能使用排序的值,因为它可以是日期,因此在多个条目上可以相同.由于表格必须按日期排序,因此也不可以使用ID.如果有人知道解决此问题

我需要找到一种替代LAG和LEAD的方法,以便在sqlite中查找我的表中的上一个和下一个条目,因为所使用的版本不支持这些(更新不是一种选择).
但是我也不能使用排序的值,因为它可以是日期,因此在多个条目上可以相同.
由于表格必须按日期排序,因此也不可以使用ID.

如果有人知道解决此问题的另一种方法,那就太好了,因为经过一个多小时的搜索和尝试,我才失去了主意.

编辑:

我的用例的重要列是:

_ID     booking_date  1       2017:11-21  3       2017:11-21  4       2017:11-21  5       2017:11-21  2       2017:11-22  6       2017:11-22  7       2017:11-22...

_ID是主键.
预订需要按日期排序.
多个预订可能具有相同的日期.
日期相同的预订按其ID排序(请参见Give n示例中的ID 2、6和7)

我需要一种通过其ID查询条目前后的条目的方法.

例如对于_ID = 6,我需要一个查询来选择_ID = 2的行,并选择一个查询来选择_ID = 7的行.
另外,选择两个查询的单个查询将同样有效.

我不需要您提供整个查询,而是需要解决此问题的方法.

解决方法:

尝试类似的 *** 作,它使用您的排序顺序(按日期ID)检索给定记录的上一个和下一个ID-假设ID是主键,则可以使用以下ID检索prev-next记录的其他列:

SELECT *,      (SELECT ID FROM t t1       WHERE t1.booking_date < t.booking_date          OR t1.booking_date = t.booking_date AND t1.ID < t.ID       ORDER BY booking_date DESC, ID DESC liMIT 1 ) prev_ID,      (SELECT ID FROM t t1       WHERE t1.booking_date > t.booking_date          OR t1.booking_date = t.booking_date AND t1.ID > t.ID       ORDER BY booking_date , ID  liMIT 1 ) next_ID FROM torder by booking_date, ID

演示:http://www.sqlfiddle.com/#!5/17631/2

| ID | booking_date | prev_ID | next_ID ||----|--------------|---------|---------||  1 |   2017-11-21 |  (null) |       3 ||  3 |   2017-11-21 |       1 |       4 ||  4 |   2017-11-21 |       3 |       5 ||  5 |   2017-11-21 |       4 |       2 ||  2 |   2017-11-22 |       5 |       6 ||  6 |   2017-11-22 |       2 |       7 ||  7 |   2017-11-22 |       6 |  (null) |
总结

以上是内存溢出为你收集整理的android-SQLite中LEAD和LAG的替代方法全部内容,希望文章能够帮你解决android-SQLite中LEAD和LAG的替代方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1210142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存