通过登录和注销记录检索在线用户

时间:2015-06-20 08:20:36

标签: sql sql-server sql-server-2008

  • enter image description here

如上所述考虑UserLog Table。我将用户的登录或注销操作保存到此表中。如何检索在线用户和登录时间?

2 个答案:

答案 0 :(得分:1)

这样的事情:

select * from UserLog l1
where Operation = 'Enter' and 
      not exists(select * from UserLog l2 
                 where l1.user = l2.user and 
                       l2.Operation = 'Exit' and 
                       l2.Time > l1.Time)

答案 1 :(得分:1)

我认为这应该适合你:

SELECT *
FROM (
    SELECT ROW_NUMBER() OVER (PARTITION BY UL.id ORDER BY UL.Time DESC) AS RN, UL.*
    FROM dbo.UserLog AS UL
    ) AS T
WHERE T.RN = 1
    AND T.Operation = 'Enter';

只需按用户ID对您的表进行分区,然后按上次操作时间排序 - 如果是Enter,那么他必须在线。

相关问题