ホームページ >データベース >mysql チュートリアル >MySQL で一意の RID ごとに最新の行の PID を取得するにはどうすればよいですか?

MySQL で一意の RID ごとに最新の行の PID を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-04 07:12:33201ブラウズ

How to Fetch the Latest Row's PID for Each Unique RID in MySQL?

MAX() と GROUP BY を使用したグループごとの最新の行の取得

タイムスタンプ、コスト、リッドなどの列を含む MySQL テーブルがあるシナリオを考えてみましょう。あなたの目的は、一意の各 Rid の最新の行の PID を取得することです。

次のコマンドを使用してこれを試みました。 query:

SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid

ただし、返された pid 値は最大タイムスタンプと一致していませんでした。これは、GROUP BY が SELECT 句内のすべての列を考慮し、各グループに最初に一致する行を選択するためです。

これを修正するには、各グループの Rid と最大タイムスタンプを特定する必要があります。これはサブクエリを使用して行うことができます:

SELECT rid, MAX(timestamp) AS ts
FROM theTable
GROUP BY rid

このクエリの結果は次のようになります:

rid | ts
-----|-----
1    | 2011-04-14 01:06:06
2    | 2011-04-14 01:05:41
3    | 2011-04-14 01:14:14

ここで、rid を使用して元のテーブルをこのサブクエリと結合できます。およびタイムスタンプを使用して、必要な pid 値を取得します。

SELECT theTable.pid, theTable.cost, theTable.timestamp, theTable.rid
FROM theTable
INNER JOIN 
(
    SELECT rid, MAX(timestamp) AS ts
    FROM theTable
    GROUP BY rid
) AS maxt
ON (theTable.rid = maxt.rid AND theTable.timestamp = maxt.ts)

このクエリの結果から pid が得られます。コスト、タイムスタンプ、および固有のリッドごとに最新の行を削除します。

以上がMySQL で一意の RID ごとに最新の行の PID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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