如上所述考虑UserLog Table。我将用户的登录或注销操作保存到此表中。如何检索在线用户和登录时间?
答案 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
,那么他必须在线。