ホームページ >データベース >mysql チュートリアル >MySQL で一意の RID ごとに最新の行の PID を取得するにはどうすればよいですか?
タイムスタンプ、コスト、リッドなどの列を含む 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 サイトの他の関連記事を参照してください。