首頁 >資料庫 >mysql教程 >如何根據時間戳高效能檢索給定ID的最新行?

如何根據時間戳高效能檢索給定ID的最新行?

Barbara Streisand
Barbara Streisand原創
2025-01-01 10:37:16535瀏覽

How to Efficiently Retrieve the Latest Row for a Given ID Based on Timestamps?

檢索指定ID的最新行

在包含多個具有相同ID的行的表中,如何高效地只提取基於時間戳的最新行?考慮範例表:

| id | signin              | signout |
+----+---------------------+---------+
|  1 | 2011-12-12 09:27:24 | NULL    |
|  1 | 2011-12-13 09:27:31 | NULL    |
|  1 | 2011-12-14 09:27:34 | NULL    |
|  2 | 2011-12-14 09:28:21 | NULL    |
+----+---------------------+---------+

要實現此目的,您可以利用聚合函數和子查詢。

使用 Aggregate MAX()

聚合 MAX() 函數可用來決定每個 ID 的最新登入時間戳記。按 id 列對結果進行分組,您可以識別每個唯一 ID 的最大登入時間戳記。

SELECT 
 id, 
 MAX(signin) AS most_recent_signin
FROM tbl
GROUP BY id

檢索完整行

檢索整個行與特定ID 的最近登入相對應的行,對傳回每個ID 的最大登入時間戳記的子查詢使用INNER JOIN ID.

SELECT 
  tbl.id,
  signin,
  signout
FROM tbl
  INNER JOIN (
    SELECT id, MAX(signin) AS maxsign FROM tbl GROUP BY id
  ) ms ON tbl.id = ms.id AND signin = maxsign
WHERE tbl.id=1

此查詢將傳回完整的最新記錄>

以上是如何根據時間戳高效能檢索給定ID的最新行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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