問題:
MySQL テーブルにはさまざまな RPC への応答が保存されますタイムスタンプ、メソッド、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 中国語 Web サイトの他の関連記事を参照してください。