SQL查询仅返回重复项的最高值

时间:2015-08-20 18:16:22

标签: mysql sql duplicates greatest-n-per-group

我有一个包含3列(sid,timestamp,state)的表,用于记录多个服务器的状态。

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

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

这是我目前正在使用的查询,它为377个服务器中的每一个返回一行,但是它返回每个最老的行,而且我不能在我的生命中让它返回最多最近。

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

1 个答案:

答案 0 :(得分:0)

我认为你需要摆脱你选择的第一个timestamp,如果你已经选择了MAX,则无需按timestamp订购。还需要分组state。所以:

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