我有表用戶日誌(ID,登錄(日期時間),用戶名,IP,UserAgengt ...)MAX功能的SQL Server
我想是讓所有的數據eachuser的最新登錄。
Select UserID, MAX(Login), IP, UserAgent
From userlog
Group by UserID, IP, UserAgent
這會給我多條記錄爲一個用戶,如果他有多個IP地址和/或用戶代理...我想這有最大的登錄日期行數據。
我有表用戶日誌(ID,登錄(日期時間),用戶名,IP,UserAgengt ...)MAX功能的SQL Server
我想是讓所有的數據eachuser的最新登錄。
Select UserID, MAX(Login), IP, UserAgent
From userlog
Group by UserID, IP, UserAgent
這會給我多條記錄爲一個用戶,如果他有多個IP地址和/或用戶代理...我想這有最大的登錄日期行數據。
Select u1.UserID, u1.Login, u1.IP, u1.UserAgent
From userlog u1
inner join
(
Select UserID, max(Login) as mLogin
From userlog
Group by UserID
) u2 on u1.UserID = u2.UserID and u2.mLogin = u1.Login
我認爲這樣做最簡單的方法是使用窗口函數row_number()
:
您不必使用group by
進行此項操作。
喜歡的東西
SELECT max.userid, max.maxlog, ul.ip, ul.useragent
FROM
(Select UserID, Max(Login) maxlog
From userlog
group by userID)
max
inner join userlog ul on ul.userid=max.userid and ul.login=max.maxlog
我希望有從加入表本身不同的解決方案,但顯然沒有一個。 :) –