如果在WHERE子句中存在?

时间:2013-02-15 15:55:40

标签: sql-server-2008 sql-server-2008-r2

我想在我的一个查询中插入一个条件,但实际上并不知道该怎么做。 基本上,我正在按文件夹_id排序一堆文件,即它们所属的文件夹(使用folder_id命令)。对于这些文件组中的每一组,我现在想要的是选择满足特定条件的第一个文件的查询。如果文件夹中的任何文件都不满足该条件,则查询应该选择文件夹中可用的第一个文档。

这是我的查询(简化):

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

对于每个文件夹,我希望查询只显示由John创建的第一个文档(最低的file_id)。如果该文件夹中没有John创建的文档,那么任何其他作者的第一个文档都不会。

FOLDER ID    FILE ID      AUTHOR
A            32           John
B            02           Peter
C            34           John
D            12           Peter

因此,ID必须是最低的,但作者必须是John或另一个。 我的想法是在IF EXISTS子句中插入WHERE子句,但是怎么做?

感谢您的回复。 VAL

0 个答案:

没有答案