ホームページ > データベース > mysql チュートリアル > SQL で各ユーザー グループから最新のメッセージを取得するにはどうすればよいですか?

SQL で各ユーザー グループから最新のメッセージを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-03 07:25:39
オリジナル
419 人が閲覧しました

How to Retrieve the Most Recent Message from Each User Group in SQL?

GROUP BY を使用して各ユーザーのグループから最新のメッセージを取得する方法

データベースには、次の内容を含む "messages" という名前のテーブルがあります。次の列:

  • id
  • from_id
  • to_id
  • 件名
  • メッセージ
  • タイムスタンプ

あなたの目標は、最新のものを抽出することです各ユーザーグループからのメッセージ。たとえば、これは、特定の会話をクリックする前に 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 サイトの他の関連記事を参照してください。

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