从数据库中选择多个最大时间戳

时间:2012-05-20 11:40:05

标签: mysql timestamp

我有一个包含多个产品的表格。对于每种产品,我都在收集价格历史。因此,我有四列:

  • log_entry
  • PRODUCT_ID
  • PRODUCT_PRICE
  • 时间戳

到目前为止,我同时更新了所有价格。这导致一个简单的查询:在子查询中,我过滤了最大时间戳,然后获得了所有价格和产品。

今天我更改了更新政策:我现在异步更新产品价格。这意味着,当我使用旧查询时,我只获得具有最大时间戳的产品价格对。

如何在一个查询中获取每个产品的最新价格/最大时间戳?

2 个答案:

答案 0 :(得分:1)

如果时间戳字段是timestamp数据类型,则在记录的每次字段更新时,此时间戳字段可以自动更新。为了实现这一点,您的ts字段应该已经定义,如下表伪示例中所示。

CREATE TABLE t1 (
  product ...
  price ...
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

当您仅更新产品或价格等其他字段时,ts字段会更新当前时间戳。然后您的旧查询也应返回最新更新的记录。

答案 1 :(得分:0)

您可以对按时间戳排序的结果使用group by。不确定它是否有效:

select * from (
  select * from products 
    order by timestamp desc
) as products_temp
group by product_id;