Sql server 2008 WHERE子句中是否存在?

Sql server 2008 WHERE子句中是否存在?,sql-server-2008,sql-server-2008-r2,Sql Server 2008,Sql Server 2008 R2,我想在我的一个查询中插入一个条件,但我真的不知道怎么做。 基本上,我是按文件夹id对一堆文件进行排序,即它们所属的文件夹(使用按文件夹id排序)。我现在想要的是,对于这些文件组中的每一个,查询以选择满足特定条件的第一个文件。如果文件夹中的任何文件都不满足该条件,则查询应选择文件夹中可用的第一个文档 这是我的问题(简化): 因此,如果我现在的结果是: FOLDER ID FILE ID AUTHOR A 32 John A

我想在我的一个查询中插入一个条件,但我真的不知道怎么做。 基本上,我是按文件夹id对一堆文件进行排序,即它们所属的文件夹(使用按文件夹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创建的第一个文档(最低文件id)。如果该文件夹中根本没有John创建的文档,那么任何其他作者的第一个都可以

FOLDER ID    FILE ID      AUTHOR
A            32           John
B            02           Peter
C            34           John
D            12           Peter
因此,ID必须是最低的,但作者必须是John或其他人。 我的想法是在
WHERE
子句中插入
IF EXISTS
子句,但是如何做呢

谢谢你的回复。
Val

您应该在示例数据和所需结果中显示一个示例,其中John恰好没有具有最低的文件id。对于文件夹B和D,John没有具有最低的文件id,因此显示了Peter的第一份文档。我想您没有领会我的意思。对于B和D,约翰根本没有档案。你看到一个潜在的用例(可以说是最重要的用例)是如何丢失的吗?将John添加到其中一个集合中,使用更高的文件id。您的示例数据需要显示我们如何实际解决问题。这就像要求代码处理闰年,但只有2007年4月的样本数据。
FOLDER ID    FILE ID      AUTHOR
A            32           John
B            02           Peter
C            34           John
D            12           Peter