草庐IT

android - SQLite 中 LEAD 和 LAG 的替代品

coder 2023-12-29 原文

我需要找到 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 排序(参见给定 n 示例中的 id 2、6 和 7)

我需要一种方法来根据条目的 ID 查询条目前后的条目。

例如,对于 _id=6,我需要一个选择 _id=2 行的查询和一个选择 _id=7 行的查询。
或者,选择两者的查询单个查询也同样有效。

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

最佳答案

尝试类似的方法,这会使用您的排序顺序(按日期+id)检索给定记录的上一个和下一个 id - 假设 id 是主键,您可以检索其他列 od prev-next 使用这些 id 的记录:

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 t
order 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 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53630542/

有关android - SQLite 中 LEAD 和 LAG 的替代品的更多相关文章

  1. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  2. ruby-on-rails - 更好的替代方法 try( :output). try( :data). try( :name)? - 2

    “输出”是一个序列化的OpenStruct。定义标题try(:output).try(:data).try(:title)结束什么会更好?:) 最佳答案 或者只是这样:deftitleoutput.data.titlerescuenilend 关于ruby-on-rails-更好的替代方法try(:output).try(:data).try(:name)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby - 允许主机名包含下划线的 URI.parse 的替代方法 - 2

    我正在使用DMOZ的listofurltopics,其中包含一些具有包含下划线的主机名的url。例如:608609TheOuterHeaven610InformationandimagegalleryofMcFarlane'sactionfiguresforTrigun,Akira,TenchiMuyoandotherJapaneseSci-Fianimations.611Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures612虽然此url可以在网络浏览器中使用(或者至少在我的浏览器中可以使用:

  5. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  6. ruby-on-rails - jRails 替代品 - 2

    你知道jrails的替代品吗?它或多或少已经过时(使用jQuery1.5-现在1.7是当前版本)。有人知道替代方案吗?谢谢编辑:我知道如何使用jqueryallone构建rails助手-但我喜欢rails助手,所以我不想单独使用jquery(没有jrails) 最佳答案 我一直在Rails中使用Prototype助手,最近我决定转而使用JQuery。起初我查看了JRails,因为它是一个直接替代品,因此需要最少的工作。但是!在阅读了更多关于JQuery的信息并尝试使用它之后,我逐渐明白,结合使用Rails和JQuery的最佳方式就是

  7. ruby-on-rails - 能够处理 rar/tar/zip/7z 的 Ruby/rubyzip 替代方案? - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我想知道是否有人知道Ruby的ruby​​zip替代品,它可以处理各种格式,特别是zip/rar/7z?我知道libarchive,但它对我的目的来说并不完整(它是一个很好的gem)。(澄清一下,libarchive-对我不起作用-因为

  8. ruby-on-rails - 对于 Ruby 应用程序,是否有比 Sanitize 更好的替代方案? - 2

    我爱Sanitize.这是一个了不起的实用程序。我遇到的唯一问题是,它需要永远准备一个开发环境,因为它使用Nokogiri,这对编译时间来说是一种痛苦。是否有任何程序可以在不使用Nokogiri的情况下执行Sanitize的操作(如果没有别的,只是温和地执行它的操作)?这将以指数方式提供帮助! 最佳答案 Rails有自己的SanitizeHelper。根据http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html,它将Thissanitizehe

  9. ruby - 如何递归 rake ? -- 或合适的替代品 - 2

    我希望我的项目的顶级Rakefile使用树中更深的rakefile来构建东西;即顶层rakefile说明如何构建项目(大图),而较低层的rakefile说明如何构建特定模块(本map片)。当然有一组共享的配置,用于在任务之间共享时执行的详细信息:所以它主要是关于保持对需要构建的内容的描述,尽可能接近正在构建的源。例如。/Source/Module/code.foo和cie应该使用/Source/Module/Rakefile中的指令构建;并且/Rakefile了解模块之间的依赖关系。我不关心它是否使用多个rake进程(ala递归make),或者只是创建单独的构建环境。无论哪种方式,它都

  10. ruby - 比 Ruby 编码(marshal)更快/更有效的替代品? - 2

    我正在寻找Ruby的Marshal功能的直接替代品,希望它比Marshal具有以下一个或多个优势:更快的序列化/反序列化更简洁(或更小)的对象图谢谢!! 最佳答案 不幸的是,这不能作为替代品,因为Marshall会自动处理复杂类型。看起来msgpack将需要构建额外的功能(如Marshal的内部结构)将迭代定义相关对象的Ruby结构。 关于ruby-比Ruby编码(marshal)更快/更有效的替代品?,我们在StackOverflow上找到一个类似的问题:

随机推荐