1

Androidでデータベースをクエリしています。このテーブルは、値を含む通常のテーブルであり、特別なことは何もありません。

必要なもの:指定されたタイムスタンプの前後に発生した2つのイベントを返します。

例:以下の表があり、選択したものが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+2Valueにして、98から90になったことを確認します。

私が使用しているのはですCursorLoaderので、通常の呼び出しに適合していることが望ましいです。

私のコードサイズはありがとう!


補足として、(すでに機能している)の安全な値を推測、Javaの残りのいくつかの行を繰り返して、必要な2つの行を特定することができます。しかし、これは非常に一般的なニーズのように思えるので、質問です。カーソルで行う必要のある通常のバンパーテストをすべてJavaで行うのは無駄のようです。BETWEENCursor

4

1 に答える 1

0
SELECT *
FROM myTable LIMIT 2
OFFSET
  (SELECT _id
   FROM myTable
   WHERE time<=1332200003002
   ORDER BY time DESC LIMIT 1) - 1;

これは何をしますか:

表から2つのエントリを選択します。最初のエントリのオフセットは次のように選択されます。

ここで最新の行を選択time <= 1332200003002し、最初の行からのオフセットを計算します。

値が0ではなく1で始まる-1場合は、最後にatが必要です(値をゼロベースのオフセットに変換するには、必要に応じてこの値を変更してください)。_id_id

于 2011-12-07T09:53:58.540 に答える