如何在WHERE子句中使用MS Access SQL子查询来替换长OR表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在WHERE子句中使用MS Access SQL子查询来替换长OR表达式相关的知识,希望对你有一定的参考价值。

我正在尝试为有趣的项目提取时间日志记录,如下所示:

SELECT project, hours, date
FROM timelog
WHERE (project="one" or project="two" ... 20 more OR clauses)

但是,由于我有一个包含有趣项目的表格,我想说

SELECT project, hours, date
FROM timelog
WHERE project in (select project from InterestingProjects)

对我来说不幸的是,在MS Access上尝试这样做时,我一无所获。子查询似乎只返回一些有趣的项目,几乎只有第一个以c开头,第一个以s开头,等等。

我想做不可能的事吗? (然后我想通过有趣的项目对行进行分组和总结,但我认为这是第二步。)谢谢。

答案

我不确定我的查询有什么问题,但鉴于你的最后评论,我认为使用join会更有意义:

select t.project, t.hours, t.date, count(ip.*) projectcount
from timelog t
   join interestingprojects ip on t.project = ip.project
group by t.project, t.hours, t.date

如果您的查询未返回预期结果,您是否可以验证project中的interestingprojectsproject中的timelog相同。也许检查空格。

以上是关于如何在WHERE子句中使用MS Access SQL子查询来替换长OR表达式的主要内容,如果未能解决你的问题,请参考以下文章

Powershell 使用 WHERE 子句插入 MS Access

Sum() 使用 IIF() 或 MS Access 中的 Where 子句

ASP - 从 MS Access DB 获取记录时遇到日期格式(在 WHERE 子句中)

MS Access 2007 OpenForm 方法,无法获取 where 子句以产生正确的结果

MS Access SQL 多个 JOIN 和 WHERE 子句

如何在 MS Access 2007 中使用查询作为报告源?