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

データベース内の各ユーザーから最新のメッセージを取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-04 04:51:42
オリジナル
467 人が閲覧しました

How to Retrieve the Most Recent Message from Each User in a Database?

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;
ログイン後にコピー

このクエリは次のことを実行します。

  1. サブクエリ "(SELECT from_id, MAX(timestamp)) 内の各ユーザーの最新のタイムスタンプを計算します。タイムスタンプ FROM メッセージ GROUP BY from_id)".
  2. このサブクエリを結合します「from_id」列と「timestamp」列を使用した元の「messages」テーブル。

結果として、各ユーザーの最新メッセージのみを含むテーブルが作成され、必要な機能が提供されます。

以上がデータベース内の各ユーザーから最新のメッセージを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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