SQL查询以查找过去120天内未登录的用户
使用SQL Server。我有两个表,都有一个名为UserID的列。第一个是用户,第二个是审计。Users表有一个716个不同用户的列表,我的目标是查找在过去120天内未出现在Audits表中的所有用户Audits表中有一个名为DateTime的列。运行查询:SQL查询以查找过去120天内未登录的用户,sql,sql-server,datetime,null,Sql,Sql Server,Datetime,Null,使用SQL Server。我有两个表,都有一个名为UserID的列。第一个是用户,第二个是审计。Users表有一个716个不同用户的列表,我的目标是查找在过去120天内未出现在Audits表中的所有用户Audits表中有一个名为DateTime的列。运行查询: Select distinct UserID from Audits Where DateTime > GETDATE() -120 我得到了315个结果。我知道我可以将其与Users表上的716个UserID字段进行比较,但我很
Select distinct UserID
from Audits
Where DateTime > GETDATE() -120
我得到了315个结果。我知道我可以将其与Users表上的716个UserID字段进行比较,但我很难弄清楚这一点,我想让我的客户能够在任何时候运行,只要他们想查看他们想要禁用的用户。这就是我所尝试的:
Select *
from Users
Where UserID Not In
(select distinct UserID
from Audits
where DateTime > GETDATE() -120)
这返回了0个结果,而不是415个。。。我想也许我需要指定列,所以我也尝试:
Select *
from Users
Where Users.UserID Not In
(select distinct Audits.UserID
from Audits
where Audits.DateTime > GETDATE() -120)
有什么建议吗
这返回了0个结果,而不是415个
审计表可能包含UserID=NULL的记录,在这种情况下,notin将失败。您可以使用不存在的查询:
您可以尝试以下查询:
select u.* from
(select * from audit where lastlogin > GETDATE() -120 )a
right outer join users u
on a.userId = u.userId
where a.userId is null
select u.* from
(select * from audit where lastlogin > GETDATE() -120 )a
right outer join users u
on a.userId = u.userId
where a.userId is null