2012-06-27 56 views
1

我每五分鐘收集一次數據並將其輸入到MySQL數據庫中。我想提取最近一行超過2個小時,然後超過1小時,然後是最近一行。在MySQL中至少相隔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 

感謝您提供任何幫助或建議。

+0

我已經重新格式化了您的查詢。一般來說,你會發現人們不想閱讀神祕而漫長的單行。你需要幫助我們來幫助你:) – Cylindric

+0

我認爲這個任務將幫助你,看看這裏:http://dev.mysql.com/doc/refman/5.1/en/events-overview.html – jcho360

回答

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 
+0

簡單和能夠利用每個部分的索引。 –

+0

@MarcusAdams ...這是設計目標(加上儘可能容易適應) –

+0

謝謝,這將做我正在尋找的!只是想知道,有沒有辦法做到這一點沒有每個小時的嵌套查詢。如果我不得不回去,說未來24小時。 – user1486294

相關問題