GROUP BY を使用して各ユーザーのグループから最新のメッセージを取得する方法
データベースには、次の内容を含む "messages" という名前のテーブルがあります。次の列:
あなたの目標は、最新のものを抽出することです各ユーザーグループからのメッセージ。たとえば、これは、特定の会話をクリックする前に Facebook の受信トレイに表示されるメッセージ リストに似ています。
最初に、メッセージを from_id 列でグループ化する次のクエリを使用しようとしました。
SELECT * FROM messages 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;
この変更されたクエリは、各グループの最新のレコードを効果的に識別し、望ましい結果を提供します。
以上がSQL で各ユーザー グループから最新のメッセージを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。