問題:
MySQL時間戳、方法、ID 和回應欄位的呼叫。目標是檢索方法和 ID 的所有組合的最新回應。
假設:
解決方案:
以下查詢可用於高效率擷取所需結果:利用MySQL 變數來避免JOIN:
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;
此查詢首先將new_method_group 值指派給每一行,表示新方法群組的開始。然後,它會過濾結果以僅包含 new_method_group 值為 1 的行,確保最終結果中僅包含每種方法的最新行。
PostgreSQL 的替代解決方案:
PostgreSQL 為此任務提供了內建功能:
SELECT DISTINCT ON (method) timestamp, method, id, response FROM rpc_responses WHERE 1 # some where clause here ORDER BY method, timestamp DESC
以上是如何有效率地檢索MySQL和PostgreSQL中每個方法和ID的最新記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!