2013-06-25 107 views
0

我有一個包含3列的表格 - time_stamp,meter_id,value。所有的meter_id都是以區域時間記錄的值.EX-:查找最近登錄的值mysql

time_stamp  value meter_id 

06/14/13 12:17:00 1212 1 
06/15/13 12:20:01 12  1 
06/16/13 12:25:30 1213 2 
06/17/13 12:30:12 12333 2 
06/18/13 12:32:34 111111 3 

我需要找到每個meter_id的最新值。

編輯

最終輸出應該是 - :

time_stamp   value meter_id 

06/15/13 12:20:01 12  1 
06/17/13 12:30:12 12333  2 
06/18/13 12:32:34 111111 3 

我希望這將有助於你理解我的問題。

謝謝

+0

TIME_STAMP被記錄的時間? – Prashant16

回答

1

也許你想要這樣的東西?

select value, Meter_id from table group by Meter_id order by time_stamp desc 
0

我猜TIME_STAMP是記錄時間,如果是的話試試這個

SELECT MAX(time_stamp),meter_id,value FROM table GROUP BY meter_id 
+0

如果每次增加值,您的查詢將會給出最大值。但是有些時候,如某些meter_ids被關閉或者值小於之前的值 – user1896796

0

如果我的理解是正確的,你想最近的所有儀表IDS條目。 您可以自行加入表並使用group by

select 
b.time_stamp, b.value, b.meter_id 
from 
    your_table as b 
    inner join (
    select max(time_stamp) as recent_time, meter_id 
    from your_table 
    group by meter_id 
) as view on (view.meter_id = b.meter_id and view.unique_key_from_your_table = b.unique_key_from_your_table) 

如果你沒有任何獨特的密鑰,但時間戳。你可以採取time_stampunique_key_from_your_table

因此,加入條件會像

view.meter_id = b.meter_id and view.recent_time = b.time_stamp 
0

嘗試:

select r.* 
from myTable r 
join (select meter_id, max(time_stamp) max_time 
     from myTable 
     group by meter_id) m 
    on r.meter_id = m.meter_id and r.time_stamp = m.max_time