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

如何使用 MAX() 和 GROUP BY 取得 MySQL 中每個 RID 的最新 PID?

Mary-Kate Olsen
發布: 2024-12-30 02:02:09
原創
548 人瀏覽過

How to Get the Latest PID for Each RID in MySQL Using MAX() and GROUP BY?

MySQL 查詢:MAX() GROUP BY

問題:

如何檢索最新行的PID使用使用了() 和GROUP 的MySQL 查詢對錶中的每個RID BY?

範例資料:

CREATE TABLE theTable (
    `pid` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `cost` INT UNSIGNED NOT NULL,
    `rid` INT NOT NULL,
) Engine=InnoDB;

INSERT INTO theTable (`pid`, `timestamp`, `cost`, `rid`)
VALUES
  (1, '2011-04-14 01:05:07', 1122, 1),
  (2, '2011-04-14 00:05:07', 2233, 1),
  (3, '2011-04-14 01:05:41', 4455, 2),
  (4, '2011-04-14 01:01:11', 5566, 2),
  (5, '2011-04-14 01:06:06', 345, 1),
  (6, '2011-04-13 22:06:06', 543, 2),
  (7, '2011-04-14 01:14:14', 5435, 3),
  (8, '2011-04-14 01:10:13', 6767, 3)
;
登入後複製

期望結果:

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
登入後複製
此查詢將傳回每個RID 第一次出現的 PID,而不是最新的。

正確查詢:

要檢索每個RID 的最新行的PID,可以使用以下命令查詢:

SELECT pid, MAX(timestamp) AS latest_timestamp, rid
FROM theTable
GROUP BY rid
HAVING latest_timestamp = MAX(timestamp)
登入後複製
此查詢首先使用GROUP BY 子句按RID 欄位對行進行分組。然後,它使用 MAX() 函數計算每組行的最大時間戳記。最後,它使用 HAVING 子句過濾結果,僅保留每個 RID 具有最新時間戳記的行。

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

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