2015-07-21 61 views
0

鑑於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;我意識到可能有其他方法來做這種事情,但我需要知道如何在這個事情中做到這一點。特別方式)

回答

2

如果您的記錄是基於同一個數據庫中的一些其他查詢,則可以使用(更改爲MyQuery可以包含任何你需要的所有WHERE和其他條款):

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

如果你的記錄是合成或來自不同的數據源,那麼你只需要通過迭代記錄集來構建ID列表。

+0

它不是合成的,但我必須保證只有記錄集中的項目才被選中,即使數據庫自創建記錄集的查詢後發生了更改。所以重用WHERE子句是不安全的。 –