ホームページ > データベース > mysql チュートリアル > データベース内の各グループの最新レコードを効率的に取得するにはどうすればよいですか?

データベース内の各グループの最新レコードを効率的に取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-31 04:52:10
オリジナル
961 人が閲覧しました

How Can I Efficiently Retrieve the Latest Record for Each Group in a Database?

GROUP BY によるグループ内の最新レコードの決定

同様のグループ化基準を持つ複数のレコードが含まれるデータベース シナリオでは、一般的なタスクは取得することです。各グループの最新レコード。これは、各ユーザーからの最新のメッセージが必要なメッセージング プラットフォームで例として挙げられます。

最初の試行と欠点

最初のアプローチには、GROUP BY 句を使用して、次のクエリに見られるように、レコードを個別のグループに集約します。

SELECT * FROM messages GROUP BY from_id
ログイン後にコピー

ただし、このクエリは

クエリ解決

各グループの最新のレコードを取得するには、より洗練されたアプローチが必要です。これには以下が含まれます:

  1. サブクエリ: 次のサブクエリを使用して各グループ内の最新のタイムスタンプ値を決定します:

    SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id
    ログイン後にコピー
  2. 結合サブクエリ: に参加します。サブクエリを含む元のメッセージ テーブル。from_id 列と timestamp 列が一致します。

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

このクエリは、メッセージ テーブル内の個別の from_id ごとに最新のメッセージを生成し、最初の懸念事項に対処します。

以上がデータベース内の各グループの最新レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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