1

5 分ごとにデータを収集し、MySQL データベースに入力しています。2 時間以上前の最新の行、1 時間以上前の行、最新の行の順に抽出したいと思います。

次のように考えていましたが、これで各時間の最後の行が得られると思います。つまり、8:05 にクエリを実行すると、6:57、7:57、および 8:02 から行が返される可能性があり、最後の 2 つは 1 時間未満の間隔です。

SELECT * 
FROM (
    SELECT * 
    FROM mytable 
    ORDER BY Date DESC 
    GROUP BY HOUR(Date) LIMIT 3
) x 
ORDER BY Date ASC

あなたが提供できる助けや提案をありがとう。

4

1 に答える 1

1
SELECT * FROM (
  SELECT * FROM mytable 
  WHERE `Date`<DATE_SUB(NOW(), INTERVAL 2 HOUR) 
  ORDER BY DATE DESC LIMIT 1
)
UNION
SELECT * FROM (
  SELECT * FROM mytable 
  WHERE `Date`<DATE_SUB(NOW(), INTERVAL 1 HOUR) 
  ORDER BY DATE DESC LIMIT 1
)
UNION
SELECT * FROM (
  SELECT * FROM mytable 
  ORDER BY DATE DESC LIMIT 1
)
ORDER BY `Date`ASC
于 2012-06-27T16:45:53.413 に答える