首頁 > 資料庫 > mysql教程 > 如何使用時間戳記選擇資料庫中每個使用者的最新行?

如何使用時間戳記選擇資料庫中每個使用者的最新行?

Linda Hamilton
發布: 2025-01-13 13:06:46
原創
495 人瀏覽過

How to Select the Most Recent Row per User in a Database with Timestamps?

檢索每個使用者的最新條目:資料庫解決方案

挑戰:

在包含時間戳記和狀態標誌(「in」或「out」)的資料庫表中有效地為每個使用者選擇最新記錄可能很複雜,特別是當使用者有多個條目共享相同的最新時間戳時。

方法:

使用兩個不同的 SQL 查詢解決了這個問題:

1。查詢多筆符合記錄:

此查詢標識每個使用者俱有最大時間戳記的所有記錄。

<code class="language-sql">SELECT t1.*
FROM lms_attendance t1
WHERE t1.time = (SELECT MAX(t2.time)
                 FROM lms_attendance t2
                 WHERE t2.user = t1.user);</code>
登入後複製

輸出:

ID USER TIME IO
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in

2。查詢單一符合記錄:

此查詢僅傳回每個使用者的單一最新記錄,在時間戳關係的情況下優先考慮最高 ID。

<code class="language-sql">SELECT t1.*
FROM lms_attendance t1
WHERE t1.id = (SELECT t2.id
                 FROM lms_attendance t2
                 WHERE t2.user = t1.user
                 ORDER BY t2.time DESC, t2.id DESC
                 LIMIT 1);</code>
登入後複製

輸出:

ID USER TIME IO
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in

說明:

  • 第一個查詢使用相關子查詢來尋找每個使用者的最新時間戳記 (MAX(time)),然後擷取與該時間戳記相符的所有項目。這可以處理多個記錄具有相同最新時間戳記的情況。
  • 第二個查詢使用 ORDER BY time DESC, id DESC 優先考慮最新時間戳,然後是最高 ID,確保使用 LIMIT 1.
  • 選擇單一、明確的最新記錄。

在這些查詢之間進行選擇取決於您是否需要具有最新時間戳記的所有記錄,還是僅需要每個使用者的單一最新記錄。 當只需要一筆記錄時,第二個查詢提供了更簡潔的解決方案。

以上是如何使用時間戳記選擇資料庫中每個使用者的最新行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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