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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-01 00:16:09302ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。