小编典典

如何从mysql表中选择最新的日期记录集

mysql

我将对各种rpc调用的响应存储在具有以下字段的mysql表中:

Table: rpc_responses

timestamp   (date)
method      (varchar)
id          (varchar)
response    (mediumtext)

PRIMARY KEY(timestamp,method,id)

method和的所有现有组合选择最新响应的最佳方法是什么id

  • 对于每个日期,对于给定的方法/ ID,只能有一个响应。

  • 并非所有呼叫组合在给定日期都必须存在。

  • 有数十种方法,数千个ID和至少365个不同的日期

样本数据:

timestamp  method  id response
2009-01-10 getThud 16 "....."
2009-01-10 getFoo  12 "....."
2009-01-10 getBar  12 "....."
2009-01-11 getFoo  12 "....."
2009-01-11 getBar  16 "....."

所需结果:

2009-01-10 getThud 16 "....."
2009-01-10 getBar 12 "....."
2009-01-11 getFoo 12 "....."
2009-01-11 getBar 16 "....."

(我不认为是同一个问题-它不会给我最新的信息response


阅读 705

收藏
2020-05-17

共1个答案

小编典典

自我回答,但是随着表的增长,我不确定这是否将是一个足够有效的解决方案:

SELECT timestamp,method,id,response FROM rpc_responses 
INNER JOIN
(SELECT max(timestamp),method,id FROM rpc_responses GROUP BY method,id) latest
USING (timestamp,method,id);
2020-05-17