GROUP BY を使用したグループごとの最新レコードの取得
このコンテキストでは、列「」を持つ「messages」という名前のテーブルがあります。 id」、「from_id」、「to_id」、「件名」、「メッセージ」、および「タイムスタンプ」。目標は、Facebook の受信トレイに表示されるのと同じように、各ユーザーから最新のメッセージを抽出することです。
指定されたクエリ「SELECT * FROMmessages GROUP BY from_id」では、代わりに各ユーザーの最も古いメッセージが生成されます。最新の。これを修正するには、別のアプローチが必要です。
最新のメッセージを取得するには、各ユーザーの最大タイムスタンプを決定し、この情報を「メッセージ」テーブルと結合する必要があります。以下のクエリはこれを実現します。
SELECT t1.* FROM messages t1 JOIN (SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id) t2 ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;
このクエリは次のことを実行します。
結果として、各ユーザーの最新メッセージのみを含むテーブルが作成され、必要な機能が提供されます。
以上がデータベース内の各ユーザーから最新のメッセージを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。