如何在Access 2010中加入函数/子查询?

时间:2014-08-07 19:18:17

标签: sql function ms-access join subquery

我确切知道如何在SQL中执行此操作,但不幸的是,由于IT决策,我必须在Access 2010中执行此操作。

如何在Access 2010中完成以下查询?

Select a.Column1
, a.Column2
from table1 as a
where Left(a.Column2,3) in (Select distinct(b.Column3) from table2 as b)

注意:我不想从table1中选择所有记录,并且在后续查询中过滤掉不符合where子句中指定的约束的记录。该解决方案将选择5.6M记录,而不仅仅是100K必要记录。

2 个答案:

答案 0 :(得分:0)

如果性能问题,请尝试将其改写为join

Select a.Column1, a.Column2
from table1 as a join
     (Select distinct b.Column3 from table2 as b)
     on Left(a.Column2, 3) = b.Column3;

但是,如果您有机会使用功能更强大的数据库(如SQL Server),我建议您抓住机会。

答案 1 :(得分:-1)

在Access中,您可以像文件一样保存查询。所以,我通常会保存

SELECT DISTINCT(b.Column3) FROM table 2 as b) 

作为001_query,然后下一个查询将是

SELECT a.Column1, a.Column2 FROM table1 as a, 001_query b WHERE findfunction!results = TRUE

如果您使用可视化查询编辑器,则必须使用“设计”选项卡中的“显示表”按钮,然后在结果窗口中,您应该能够添加表a,然后单击查询选项卡以添加001_query。