以下是我正在嘗試完成的操作: 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