我在Android中查询数据库。该表是您的普通表,其中没有任何特殊值。
我需要的是:返回在给定时间戳之前和之后发生的两个事件。
示例:假设我有下表,我的选择是1332200003002:
_id | Time | Value
... ...
n | 1332200002000 | 145
n+1 | 1332200003001 | 98 (this is <= selection)
(1332200003002 is here, between those two)
n+2 | 1332200004000 | 90 (this is > selection)
n+3 | 1332200005000 | 100
n+4 | 1332200005001 | 280
所以,如果我的选择是1332200003001或1332200003002 ...我希望返回的行是 n + 1 和 n + 2 ,所以我可以看出Value
从98变为90。
我正在使用的是CursorLoader
,所以它最好适合其通常的调用。
我的代码大小谢谢你!
作为旁注,我可以猜测BETWEEN
的安全值( IS 已经工作),然后迭代Java中剩下的少量Cursor
行用于查明我需要的两行。然而,在我看来,这似乎是一个非常普遍的需求,因此这个问题。使用Cursor进行所有通常的保险杠测试似乎是浪费在Java中完成的。
答案 0 :(得分:0)
SELECT *
FROM myTable LIMIT 2
OFFSET
(SELECT _id
FROM myTable
WHERE time<=1332200003002
ORDER BY time DESC LIMIT 1) - 1;
这是做什么的:
从表格中选择2个条目。第一个条目的偏移量选择如下:
选择time <= 1332200003002
的最新行,并计算第一行的偏移量。
如果您的-1
值从1开始而不是0,则需要最后_id
。(根据需要更改此值,将_id
值转换为从零开始的偏移量。 )