如何從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中文網其他相關文章!