我有一个包含此列的数据库: id,object_id,name,value,timestamp
此数据库中有很多对象参数。对于每个object_id,我都有记录:
id object_id name value timestamp
1 20 event data 2016-08-10 17:00:00
2 20 event hist 2016-08-10 18:00:00
3 20 event data 2016-08-10 19:00:00
4 20 event hist 2016-08-10 16:00:00
5 20 source device 2016-08-10 17:00:00
6 20 source device 2016-08-10 18:00:00
7 20 source webservice 2016-08-10 19:00:00
8 20 source webservice 2016-08-10 16:00:00
所以我会得到实际的数据,例如2016-08-10 19:00:08:
3 20 event data 2016-08-10 19:00:00
7 20 source webservice 2016-08-10 19:00:00
我一直使用这个查询
SELECT *
FROM table st1
INNER JOIN (SELECT max(id) as id
FROM table
WHERE object_id = 20 AND timestamp <= '2016-08-10 19:00:08'
GROUP BY `name`) st2
ON st2.id = st1.id
WHERE object_id = 20
这很有效,因为max(id)总是最新的信息,但现在已经不再...
我应该使用什么查询来解决此问题?
答案 0 :(得分:0)
您可以按时间戳订购:
ORDER BY `timestamp` DESC
并添加一个条件,其中时间戳必须比一小时前更新。 UNIX_TIMESTAMP()会把它变成一个你可以用这种方式操作的整数。