Mysql从参数表中获取最新信息

时间:2016-08-10 20:22:33

标签: mysql

我有一个包含此列的数据库: 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)总是最新的信息,但现在已经不再...

我应该使用什么查询来解决此问题?

1 个答案:

答案 0 :(得分:0)

您可以按时间戳订购:

ORDER BY `timestamp` DESC

并添加一个条件,其中时间戳必须比一小时前更新。 UNIX_TIMESTAMP()会把它变成一个你可以用这种方式操作的整数。