0

私は自分のウェブサイトに作業グラフを持っていますが、グラフ データは 24 時間の時間枠内で開始および終了しますが、実際にはフレームから開始する必要があります。私のクエリは次のようになります。

select * where timestamp > 24hrs

時間枠内のすべてのデータに加えて、時間枠の前の最初のデータ ポイントを照会するにはどうすればよいですか? 画面外のポイントが 10 時間離れている場合もあれば、10 秒離れている場合もあるため、定数値を使用することはできません。

4

1 に答える 1

1

次の方法で、時間枠の前の最初のデータ ポイントを選択できます。

SELECT * FROM yourtable WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1

同一のタイムスタンプが複数存在する可能性がある場合は、ランダムに 1 つを選択できます。それが受け入れられない場合は、ORDER BY timestamp DESC, primary_key代わりに使用します。

したがって、次の方法で必要なものを取得できますUNION

/* This gets the first item previous to your range limitation */
SELECT
    * FROM yourtable
    WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1
UNION
/* Your original query */
SELECT
    * FROM yourtable
    WHERE timestamp > 24;

ここでは(質問に基づいて)タイムスタンプは整数であると想定していますが、DATETIME列の場合は上記を調整できます。

于 2013-01-22T21:10:50.023 に答える