2013-07-09 122 views
1

我有表用户日志(ID,登录(日期时间),用户名,IP,UserAgengt ...)MAX功能的SQL Server

我想是让所有的数据eachuser的最新登录。

Select UserID, MAX(Login), IP, UserAgent 
From userlog 
Group by UserID, IP, UserAgent 

这会给我多条记录为一个用户,如果他有多个IP地址和/或用户代理...我想这有最大的登录日期行数据。

回答

1
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 
+0

我希望有从加入表本身不同的解决方案,但显然没有一个。 :) –

4

我认为这样做最简单的方法是使用窗口函数row_number()

您不必使用group by进行此项操作。

0

喜欢的东西

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