2015-08-20 69 views
0

我有一个包含3列(sid,timestamp,state)的表,用于记录多个服务器的状态。SQL查询只返回重复值最高的值

该表目前有超过760,000行跟踪377个不同的服务器。

我想要做的是返回每个377服务器的最新行。

这是我目前正在使用的查询,它为每个377服务器返回一个单行,但它返回每个最旧的行,而且我不能为我的生活得到它返回最近的。

SELECT `sid`, `timestamp`, `state`, MAX(`timestamp`) 
FROM `server_history` 
GROUP BY `sid` 
ORDER BY `sid` ASC, `timestamp` DESC 

回答

0

我认为你需要摆脱您选择第一timestamp的,没有必要通过timestamp订购如果你已经选择MAX。还需要组state。所以:

SELECT `sid`, `state`, MAX(`timestamp`) 
FROM `server_history`  
GROUP BY `sid`, `state` 
ORDER BY `sid` ASC