我有一張生產讀數表,需要獲得包含每小時min(timestamp)行的結果集。 列布局非常簡單: ID,時間戳,SOURCE_ID,SOURCE_VALUEMySQL - 如何選擇給定日期每小時min(timestamp)的行
的數據樣本將如下所示:
123, '2013-03-01 06:05:24',PMPROD,12345678.99
124,'2013-03-01 06:15:17',PMPROD,88888888.99
125,'2013-03-01 06:25:24',PMPROD,33333333.33
126,'2013-03-01 06 :38:14',PMPROD,44444444.44
127,'2013-03-01 07:12:04',PMPROD,55555555.55
128,'2013-03-01 10:38:14',PMPROD,44444444.44
129, '2013-03-01 10:56:14',PMPROD,22222222.22
130, '2013-03-01 15:28:02',PMPROD,66666666.66
記錄被添加到該並且source_value已經計算好了,所以不需要總和。
我無法弄清楚如何獲得current_date的每小時的最小(時間戳)行。
select *
from source_readings
use index(ID_And_Time)
where source_id = 'PMPROD'
and date(timestamp)=CURRENT_DATE
and timestamp =
(select min(timestamp)
from source_readings use index(ID_And_Time)
where source_id = 'PMPROD'
)
上面的代碼當然給了我一個記錄。我需要一個記錄的最小值(小時(時間戳))的current_date。
我的結果集應該包含ID的行:123,127,128,130。我已經玩了好幾個小時了。誰可以成爲我的英雄? :)
您所查詢的是正確的。但'DATE_FORMAT'以另一種方式接受參數([mysql doc](https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format))。 [Here](http://sqlfiddle.com/#!2/1ab9e/3)是小提琴中的答案。 – chandimak 2013-03-01 18:03:03
謝謝! chandimak,它運作完美!我需要研究該文檔以找出它的工作原理。不知道用DATE_FORMAT函數重新構建時間戳的過程,但似乎是它的關鍵。 – mwm4 2013-03-01 18:09:56
@ mwm4我仔細檢查了這一點。這並沒有給出正確的答案。但是,@JW。的答案返回正確的結果。在這個答案中,「group by」值存在問題。您可以通過交換[fiddle](http://sqlfiddle.com/#!2/7dfba/1)中的前2個時間戳值來檢查錯誤。有類似的問題,並參考[這個答案](http://stackoverflow.com/questions/15155178/mysql-get-last-update-values-from-mysql-table/15157018#15157018)。希望它會有用。 – chandimak 2013-03-01 18:37:07