檢索指定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中文網其他相關文章!