以下是我正在尝试完成的操作: 1.从users表中提取用户标识(documents.ownerID是Users.Handle的外键) 2.对于用户谁没有那是在文件表中的最近90天SQL“Where Exists”不返回任何行
这里创造了一个纪录是我迄今为止查询(我通过SQL工作室管理2012运行此):
Select Users.UserID
From Documents
Inner Join Users on documents.OwnerID = users.handle
Where Not Exists
(
Select *
From Documents
Where documents.creationtime >= Dateadd(day, -90, getutcdate())
)
Group by Users.UserID
Order by Users.UserID ASC
输出中没有返回。但是,当我从“不存在”语句中删除“不”时,会得到具有最近90天内在文档表中创建的记录的用户输出。另外,如果我将“> =”指示符更改为“=”,我也会接收输出。我认为问题在于我对EXIST声明没有一个明确的理解。我非常感谢你的帮助。
我的理解,“不存在”的是,它的查询将返回不包含在子查询中的所有内容,对吗?因此,如果用户在90天内没有创建记录,那么他们会在我的具体查询中返回(在Gordon或者课程的编辑之后),对吧?谢谢你的帮助。 – user2124571 2013-05-08 22:44:10
是的,你通常要将NOT EXISTS子查询连接到你的主要查询。所以在你的原始文件中,你是在说:“如果在过去90天的文件中没有任何一行,请给我记录。”在戈登的作品中,他说:“把我过去90天没有相关文档的所有记录都寄给我”。希望这有助于。 – Aushin 2013-05-08 22:54:21
它绝对有帮助,谢谢! – user2124571 2013-05-08 22:55:04