ホームページ > データベース > mysql チュートリアル > MySQL の `MAX()` と `GROUP BY` を使用して、一意の `rid` ごとに最新の `pid` を効率的に取得する方法は?

MySQL の `MAX()` と `GROUP BY` を使用して、一意の `rid` ごとに最新の `pid` を効率的に取得する方法は?

Mary-Kate Olsen
リリース: 2025-01-01 00:16:09
オリジナル
256 人が閲覧しました

How to Efficiently Retrieve the Latest `pid` for Each Unique `rid` Using MySQL's `MAX()` and `GROUP BY`?

MySQL クエリの最適化: MAX() と GROUP BY

問題:

列 pid、タイムスタンプを持つテーブルが指定された場合、コスト、およびリッドのタスクは、次のことを考慮して、一意のリッドごとに最新の行の pid を取得することです。 pid は自動インクリメント主キーです。

元のクエリ:

次のクエリは最大タイムスタンプと対応する Rid 値を取得しますが、最新のタイムスタンプは正しく返されません。 pid:

SELECT MAX(timestamp), rid, pid FROM theTable GROUP BY rid
ログイン後にコピー

解決策:

各 Rid の最新の PID を効果的に取得するには、以下のテクニックの組み合わせが必要です:

  1. 最大タイムスタンプと対応する Rid を特定する値:

    SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid
    ログイン後にコピー
  2. 最大タイムスタンプ結果に対して元のテーブルを結合します:

    SELECT
        t.pid,
        t.cost,
        t.timestamp,
        t.rid
    FROM
        theTable AS t
    JOIN
        (SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid) AS maxt
    ON
        t.rid = maxt.rid AND t.timestamp = maxt.maxt
    ログイン後にコピー

この改訂されたクエリは、pid、コスト、タイムスタンプを効果的に取得し、一意の各行の最新の行を削除します。元のテーブルから削除します。

以上がMySQL の `MAX()` と `GROUP BY` を使用して、一意の `rid` ごとに最新の `pid` を効率的に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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