我在sqlite数据库中有很多问题,并希望每次请求问题时都能获得下一个问题。当我完成每个问题时,我想从头开始。一种方法是保存最大的ID,然后在每次查询之前将currentIndex设置回最低的ID ......但是如果在查询中这样做会很好。
我可以通过此查询获得下一个:
@"SELECT * FROM question WHERE id > %i ORDER BY id ASC LIMIT 1", currentIndex)
是否可以检查查询是否没有更高ID的下一条记录,然后从最开始的ID开始?
由于
答案 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"