2012-08-01 31 views
0

最好不用下載整個數據庫,並掃描每個項目,是否有可能訪問該表中的MySQL查詢:只返回最高值的另一種獨特的列

__________________________________ 
| ColID |  Timestamp  | 
|___________|_____________________| 
|_____2_____|_2012-08-01_12:00:00_| 
|_____1_____|_2012-08-01_12:01:00_| 
|_____3_____|_2012-08-01_12:02:00_| 
|_____3_____|_2012-08-01_12:03:00_| 
|_____2_____|_2012-08-01_12:04:00_| 
|_____3_____|_2012-08-01_12:05:00_| 

僅返回這些行:

__________________________________ 
| ColID |  Timestamp  | 
|___________|_____________________| 
|_____1_____|_2012-08-01_12:01:00_| 
|_____2_____|_2012-08-01_12:04:00_| 
|_____3_____|_2012-08-01_12:05:00_| 

,以便與僅提取每個ColID最高Timestamp

回答

1

的一個用途:

SELECT ColID, MAX(Timestamp) AS Timestamp 
FROM  tbl 
GROUP BY ColID 

而且,只是提示你可能要牢記的前景:如果你想還可以選擇其他列,可能是在同一個表中的每個最大ColID,你不能由於GROUP BY的性質,在上述查詢中直接選擇它。您需要將包裹查詢中加入再選擇加入的ID和日期列都:使用GROUP BYMAX

SELECT b.* 
FROM tbl a 
JOIN (
     SELECT ColID, MAX(Timestamp) AS max_timestamp 
     FROM  tbl 
     GROUP BY ColID 
     ) b ON a.ColID = b.ColID AND a.max_timestamp = b.Timestamp 
1

是的,你可以實現這一目標爲:

SELECT ColID, MAX(Timestamp) AS max_Timestamp  
FROM my_table 
GROUP BY ColID;