我想在我的一個查詢中插入一個條件,但不知道如何去做。 基本上,我正在通過文件夾_id對它們進行排序,即它們屬於的文件夾(使用folder_id的順序)。我現在想要的是,對於這些文件組中的每一個,都是查詢選擇滿足特定條件的第一個文件。如果該條件未被文件夾中的任何文件滿足,則查詢應該選取該文件夾中可用的第一個文檔。如果在WHERE子句中存在EXISTS?
這是我的查詢(簡體):
select folder_id,
file_id,
first_name
from f_file
where first_name = 'John'
order by folder_id
所以,如果我現在的結果:
FOLDER ID FILE ID AUTHOR
A 32 John
A 41 John
A 56 Thomas
A 78 Peter
B 02 Peter
B 03 Peter
B 45 Peter
C 34 John
C 56 Thomas
C 77 Peter
C 86 John
D 12 Peter
D 34 Thomas
D 89 Thomas
爲每個文件夾,我想查詢只顯示第一個文件(最低的file_id)是由John創建的。如果在該文件夾中根本沒有John創建的文檔,則比任何其他作者的第一個文檔都要做的更好。
FOLDER ID FILE ID AUTHOR
A 32 John
B 02 Peter
C 34 John
D 12 Peter
所以,ID必須是最低的,但作者必須是約翰或另一個。 我的想法是在WHERE
條款中插入一個IF EXISTS
子句,但該怎麼做?
感謝您的回覆。 瓦爾
你應該在你的樣本數據和期望的結果,其中約翰只是沒有方便碰巧也有最低的file_id顯示的例子。 – 2013-02-15 16:02:38
對於文件夾B和D,John沒有最低的file_id,所以Peter的第一個文檔正在顯示。 – 2013-02-18 10:15:35
我想你錯過了我的觀點。對於B和D,John根本沒有文件。你看到一個潛在的用例(可以說是最重要的用例)是如何失蹤的?將John添加到其中一個集合中,使用更高的file_id。您的樣本數據需要顯示我們如何真正解決問題。這就像要求交易的代碼一樣,閏年只有2007年4月的樣本數據。 – 2013-02-18 16:36:10