如何从 MySQL 表中检索最新日期的记录
在 MySQL 表中存储时间敏感数据时,通常需要检索特定字段组合的最新记录。以下示例演示了如何在处理具有时间戳、方法和 ID 等字段的 RPC 响应表时实现此目的。
问题
考虑一个名为rpc_responses 具有以下结构:
CREATE TABLE rpc_responses ( timestamp DATE, method VARCHAR, id VARCHAR, response MEDIUMTEXT, PRIMARY KEY (timestamp, method, id) );
给出以下内容data:
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 | "....." |
期望结果
获取方法和 id 的所有现有组合的最新响应列表:
timestamp | method | id | response |
---|---|---|---|
2009-01-10 | getThud | 16 | "....." |
2009-01-10 | getBar | 12 | "....." |
2009-01-11 | getFoo | 12 | "....." |
2009-01-11 | getBar | 16 | "....." |
回答
要完成此任务,利用以下查询:
SELECT * FROM ( SELECT *, IF(@last_method = method, 0, 1) AS new_method_group, @last_method := method FROM rpc_responses ORDER BY method, timestamp DESC ) AS t1 WHERE new_method_group = 1;
此查询无需连接即可有效检索所需结果。它还维护所需的行结构,为方法和 id 的每个唯一组合提供不同的记录。
以上是如何在MySQL中为每个方法和ID组合选择最新记录?的详细内容。更多信息请关注PHP中文网其他相关文章!