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

Sql 如何在Access 2010中加入函数/子查询?,sql,function,ms-access,join,subquery,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) 注意:我不想从表1中选择所有记录,并在后续查询中筛选出不符合where子句中指定的约束的记录。此解决方案将

我确切地知道如何在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)

注意:我不想从表1中选择所有记录,并在后续查询中筛选出不符合where子句中指定的约束的记录。此解决方案将选择560万条记录,而不是仅选择10万条必需的记录。

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

SELECT DISTINCT(b.Column3) FROM table 2 as b) 
作为001_查询,然后下一个查询将是

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

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

如果是性能问题,请尝试将其重新表述为联接:


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

您尝试过这个查询吗?看起来它可以工作,尽管不需要使用distinct。正如@GordonLinoff所说的,您发布的查询应该可以在Access中工作。@GordonLinoff之前,它给了我一条错误消息,大意是无法使用聚合函数。调试过程的一部分删除了where子句/表达式中的所有其他约束。今天,它所做的只是花了30多分钟的时间计算,而且MS Access仍处于“无响应”状态。为了评估一下,我在不到45秒内用SQL在同一个数据集上运行了相同的查询。
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;