ホームページ > データベース > mysql チュートリアル > MySQL でメソッドと ID の組み合わせごとに最新のレコードを選択する方法は?

MySQL でメソッドと ID の組み合わせごとに最新のレコードを選択する方法は?

Mary-Kate Olsen
リリース: 2024-12-18 18:40:19
オリジナル
230 人が閲覧しました

How to Select the Latest Records for Each Method and ID Combination in MySQL?

MySQL テーブルから最新の日付付きレコードを取得する方法

時間に依存するデータを MySQL テーブルに保存する場合、多くの場合、次のことが必要になります。フィールドの特定の組み合わせについて最新のレコードを取得します。次の例は、タイムスタンプ、メソッド、ID などのフィールドを備えた RPC 応答のテーブルを処理するときにこれを実現する方法を示しています。

Question

という名前のテーブルについて考えます。次の構造を持つ rpc_responses:

CREATE TABLE rpc_responses (
  timestamp DATE,
  method VARCHAR,
  id VARCHAR,
  response MEDIUMTEXT,
  PRIMARY KEY (timestamp, method, id)
);
ログイン後にコピー

次の場合データ:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート