首頁 > 資料庫 > mysql教程 > 如何使用 MAX() 和 GROUP BY 來擷取 MySQL 中每個唯一 RID 的最新行的 PID?

如何使用 MAX() 和 GROUP BY 來擷取 MySQL 中每個唯一 RID 的最新行的 PID?

Patricia Arquette
發布: 2024-12-31 01:29:12
原創
453 人瀏覽過

How to Retrieve the PID of the Latest Row for Each Unique RID in MySQL Using MAX() and GROUP BY?

MySQL 查詢:MAX() Group By

在MySQL 中,GROUP BY 子句用於將指定中具有相同值的行組合在一起組,而MAX()函數傳回給定列中的最大值

問題陳述

給定一個包含以下列的表:

  • pid(自增主鍵)
  • 時間戳(預設值的時間戳記)
  • 成本(整數)
  • rid (整數)

目標是為每個唯一的Rid 檢索最新行的PID。預期輸出應為:

pid MAX(timestamp) rid
5 2011-04-14 01:06:06 1
3 2011-04-14 01:05:41 2
7 2011-04-14 01:14:14 3

初始查詢

嘗試以下查詢來解決問題:

SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
登入後複製

但是,該查詢返回了不正確的PID,因為它選擇了第一次出現的rod 值而不是最新的PID

解決方案查詢

要獲得所需的結果,可以使用以下查詢:

SELECT pid, MAX(timestamp), rid
FROM (
    SELECT pid, timestamp, rid,
        ROW_NUMBER() OVER (PARTITION BY rid ORDER BY timestamp DESC) AS rn
    FROM theTable
) AS subquery
WHERE rn = 1
GROUP BY rid
登入後複製

說明

說明

說明說明說明說明🎜>此查詢使用子查詢對每個Rid 的行按降序排列使用ROW_NUMBER()函數的時間戳記。 rn 列為每一行分配一個排名,其中 1 表示每個 Rid 具有最新時間戳記的行。 然後外部查詢過濾結果以僅包含 rn 等於 1 的行,確保只有選擇每個 Rid 的最新行。 pid、MAX(timestamp) 和rid 值按rid 分組以產生所需的輸出。

以上是如何使用 MAX() 和 GROUP BY 來擷取 MySQL 中每個唯一 RID 的最新行的 PID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板