問題:
假設資料庫表包含使用者登入訊息,我們如何檢索每個使用者的最後登入日期?考慮到可能存在重複的登入日期。
解:
解決此問題有兩種常見方法:
方法一:使用INNER JOIN的子查詢
此方法利用子查詢來識別每個使用者的最後登入日期,然後用於過濾主表:
<code class="language-sql">select t.username, t.date, t.value from MyTable t inner join ( select username, max(date) as MaxDate from MyTable group by username ) tm on t.username = tm.username and t.date = tm.MaxDate</code>
方法二:視窗函數
對於支援視窗函數的資料庫,可以使用更有效率的方法:
<code class="language-sql">select x.username, x.date, x.value from ( select username, date, value, row_number() over (partition by username order by date desc) as _rn from MyTable ) x where x._rn = 1</code>
此方法使用在分區資料上的行號排序,其中每個使用者的最後日期被分配等級1。
以上是如何在 SQL 中檢索每個使用者的最新登入日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!