【问题标题】:Sqlite get next record or first if at endSqlite 获取下一条记录,如果结束则获取第一条记录
【发布时间】:2014-11-08 00:33:37
【问题描述】:

我在 sqlite 数据库中有一堆问题,并且希望在每次请求问题时都得到下一个问题。当我完成每个问题时,我想从头开始。一种方法是保存最大的 ID,然后在每次查询之前将 currentIndex 设置回最低的 ID……但如果在查询中这样做会很好。

我可以通过这个查询得到下一个:

@"SELECT * FROM question WHERE id > %i ORDER BY id ASC LIMIT 1", currentIndex) 

如果没有更高ID的下一条记录,是否可以签入查询,然后从最低ID的开头开始?

谢谢

【问题讨论】:

    标签: sql objective-c sqlite


    【解决方案1】:

    此查询获取下一条记录和第一条记录,然后返回实际存在的第一条记录:

    SELECT *
    FROM (SELECT *
          FROM question
          WHERE id > %i
          ORDER BY id
          LIMIT 1)
    UNION ALL
    SELECT *
    FROM (SELECT *
          FROM question
          ORDER BY id)
    LIMIT 1
    

    或者,您可以调整id 限制:

    SELECT *
    FROM question
    WHERE id > CASE WHEN EXISTS (SELECT 1
                                 FROM question
                                 WHERE id > %i)
                    THEN %i
                    ELSE -1
               END
    ORDER BY id
    LIMIT 1
    

    【讨论】:

      【解决方案2】:

      这应该给你第一个(最低的 id)

      @"SELECT * FROM question ORDER BY id ASC LIMIT 1"
      

      【讨论】:

      • 感谢您的评论,但这并不是我想要的。我更新了问题以进行澄清。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多