MySQL 查詢:MAX() Group By
在MySQL 中,GROUP BY 子句用於將指定中具有相同值的行組合在一起組,而MAX()函數傳回給定列中的最大值
問題陳述
給定一個包含以下列的表:
目標是為每個唯一的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中文網其他相關文章!