SQL WHERE ... IN记录集

时间:2015-07-21 12:16:36

标签: sql vba access-vba ms-access-2010 recordset

如果VBA中的Recordset是先前SQL查询的结果,我如何在新SQL语句的WHERE子句中使用此Recordset的结果?

我想写这样的东西:

SELECT ID FROM MyTable WHERE ID IN <<ID column of myRecordSet>> ;

显然这不是正确的语法。我希望它选择MyTable中具有与myRecordSet中某个ID匹配的ID的所有行。换句话说,我尝试做类似SQL子查询的事情,除了子查询是一个记录集。

同样显然,我可以通过遍历IN (a,b,c)逐个元素来构建myRecordSet表达式元素,但我问这个问题是因为我认为这是不必要的。

(这个问题的基础是新查询的ID列表来自Recordset;我意识到可能有其他方法可以做这种事情,但我需要知道如何在这个特定的事情中做到这一点方式。)

1 个答案:

答案 0 :(得分:3)

如果您的记录集基于来自同一数据库的其他查询,那么您可以使用(myQuery可以包含所有WHERE和其他条款,无论您需要什么):

SELECT ID FROM MyTable WHERE ID IN (select ID from myQuery)

如果您的记录集是综合的或来自不同的数据源,那么您只需通过迭代记录集来构建ID列表。