首頁 >資料庫 >mysql教程 >如何使用 MySQL 的'MAX()”和'GROUP BY”高效檢索每個唯一'rid”的最新'pid”?

如何使用 MySQL 的'MAX()”和'GROUP BY”高效檢索每個唯一'rid”的最新'pid”?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-01 00:16:09261瀏覽

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

MySQL 查詢最佳化:MAX() 和 GROUP BY

問題:

給定一個包含 pidid、pid、time列的表格、cost和rid,任務是檢索每個唯一rid的最新行的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn