SQL WHERE ... 在记录集中

SQL WHERE ... IN recordset

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

我想写这样的东西:

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

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

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

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

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

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

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