1

我每五分钟收集一次数据并将其输入 MySQL 数据库。我想提取超过 2 小时的最近行,然后是超过 1 小时,然后是最近的行。

我正在考虑以下内容,但我认为这会让我每个小时的最后一行。这意味着如果我在 8:05 运行查询,我可能会从 6:57、7:57 和 8:02 返回行,其中最后两个相隔不到一个小时。

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 回答