SQL WHERE ... IN记录集

SQL WHERE ... IN记录集

问题描述:

鉴于VBA中的Recordset是以前的SQL查询的结果,我如何在新的SQL语句的WHERE子句中使用此Recordset的结果?SQL WHERE ... IN记录集

我想写的东西是这样的:

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

显然,这是不正确的语法。我希望它选择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列表。

+0

它不是合成的,但我必须保证只有记录集中的项目才被选中,即使数据库自创建记录集的查询后发生了更改。所以重用WHERE子句是不安全的。 –