我有一个包含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
答案 0 :(得分:0)
我认为你需要摆脱你选择的第一个timestamp
,如果你已经选择了MAX,则无需按timestamp
订购。还需要分组state
。所以:
SELECT `sid`, `state`, MAX(`timestamp`)
FROM `server_history`
GROUP BY `sid`, `state`
ORDER BY `sid` ASC