如果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;我意识到可能有其他方法可以做这种事情,但我需要知道如何在这个特定的事情中做到这一点方式。)
答案 0 :(得分:3)
如果您的记录集基于来自同一数据库的其他查询,那么您可以使用(myQuery可以包含所有WHERE和其他条款,无论您需要什么):
SELECT ID FROM MyTable WHERE ID IN (select ID from myQuery)
如果您的记录集是综合的或来自不同的数据源,那么您只需通过迭代记录集来构建ID列表。