複数の列を含むテーブルがあり、列の値を確認したいのですが、別の列の値が表示されるまで、その列の値の後の行を選択します。私はを使用してみましたBETWEEN
が、列の値が整数の場合、整数間の数値のみを検索します。
たとえば、次のようなテーブルがあるとします。
id時間値 t1 12:00 PM 15 t1 12:02 PM 4 t1 12:03 PM 7 t1 12:05 PM 16 t5 12:10 PM 250 t5 12:15 PM 15 t8 11:00 AM 15 t8 3:00 PM 2 t8 3:05 PM 100 t2 7:00 PM 15 t2 7:01 PM 16 t15 5:00 AM 35
15と16の値の間の行を取得したいと思います。基本的に、で並べ替えてid
、が表示され、time
15が表示された後、同じ内に値が16になるまで行を収集できますid
。値16がない場合、たとえば次の100行が必要で、次の値15を検索します。
クエリがこれを返すようにします。
id時間値 t1 12:00 PM 15 t1 12:02 PM 4 t1 12:03 PM 7 t1 12:05 PM 16 t2 7:00 PM 15 t2 7:01 PM 16 t5 12:15 PM 15 t8 11:00 AM 15 t8 3:00 PM 2 t8 3:05 PM 100
混乱するかもしれません。私はもう試した:
SELECT * FROM table WHERE value BETWEEN '15' AND '16' ORDER BY id, time
開始点として、しかしそれらは整数であるため、15または16の値を持つ行のみを返します。
私はしてテーブルをソートしたいid
、その後time
。これらのエントリは別のシステムを介して自動的に追加されるため、特定の値の範囲についてテーブルをクエリしようとしています。
何か案は?
明確化:
15, 1, 16, 7, 15, 2, 16
同じの行がある場合、id
両方の「島」が必要です15, 1, 16, 15, 2, 16
。
15が見つかった場合や、16でないいくつかの値の後に別の15の値がある場合に、ソリューションでどのように処理しますか?
—
デビッドדודוマルコヴィッツ2016
@DuduMarkovitz 16の値が見つからない場合、100の値の後、次の15の値からやり直したいと思います。100未満の値の後に15の別の値がある場合は、最初からやり直す必要があります。私の目的では、これが発生することはほとんどありません。それは有効な質問です。
—
2016
ありがとう。幸い、これは現在のソリューションですでに処理されている方法です。
—
DavidדודוMarkovitz 2016