如何在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
中的interestingprojects
与project
中的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 子句以产生正确的结果