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 列表。
给定 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 列表。