問題:
列 pid、タイムスタンプを持つテーブルが指定された場合、コスト、およびリッドのタスクは、次のことを考慮して、一意のリッドごとに最新の行の pid を取得することです。 pid は自動インクリメント主キーです。
元のクエリ:
次のクエリは最大タイムスタンプと対応する Rid 値を取得しますが、最新のタイムスタンプは正しく返されません。 pid:
SELECT MAX(timestamp), rid, pid FROM theTable GROUP BY rid
解決策:
各 Rid の最新の PID を効果的に取得するには、以下のテクニックの組み合わせが必要です:
最大タイムスタンプと対応する Rid を特定する値:
SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid
最大タイムスタンプ結果に対して元のテーブルを結合します:
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 サイトの他の関連記事を参照してください。