如果结束,Sqlite会获得下一条记录或第一条记录

时间:2014-09-14 09:23:07

标签: sql objective-c sqlite

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

我可以通过此查询获得下一个:

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

是否可以检查查询是否没有更高ID的下一条记录,然后从最开始的ID开始?

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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