2016-02-06 54 views
1

基於描述表值我有一個表Values_to_find與描述找到表(大約10000行)值。例如:獲得另一個表

Table_name Column_name Row_id 
table1  2   13 
table8  9   22 
... 

Table_name有值:table0table1,... table9(這些表是我的數據庫暫時的,而是要說明的例子,我寫了類似普通的表名)
Column_name:從0到9
Row_id from 0 to 100

我想要得到所有在Values_to_find表中描述的源的值。我如何以最佳方式做到? 我在想while環或cursor,但裏面他們我會用創造@query變量,如:

DECLARE @query VARCHAR(500) 
SET @query = ' 
    SELECT ['[email protected]_name+'] 
    FROM #'[email protected]_name+' 
    WHERE Row_id = '[email protected]_id 

然後我會用EXEC (@query)或某事像這樣從@query獲得返回值。但它是最佳的嗎?我不知道。你有什麼想法,我怎麼能以一種好的方式做到這一點?

回答

0

如果我理解正確的問題,以獲得您可以使用表變量和sp_executesql存儲過程的組合動態查詢的結果。它會是這個樣子:

DECLARE @result as table(Col1 varchar(200)) 
DECLARE @query VARCHAR(500) 
SET @query = ' 
    SELECT ['[email protected]_name+'] 
    FROM #'[email protected]_name+' 
    WHERE Row_id = '[email protected]_id 

INSERT INTO @result EXEC SP_EXECUTESQL @qry 
SELECT * FROM @result 

您還可以使用OPENROWSET,下面this approach,這將需要管理員權限來進行設置。

+0

不,我的問題是:「我怎樣才能得到它源在Values_to_find表中最佳的方式描述的所有值?」如果使用'EXEC @ query',我將不得不做10k次操作。我想知道它是否好,也許有另一種更好的方法來獲得指定的數據。 – Monic

+0

哦,對不起。我真不知道我完全理解,但因爲你必須動態地建立10K查詢,然後執行它們,我不認爲你可以做任何事情比通過遊標循環別的。更優化的方式可能需要重新考慮用於存儲數據的整個方案,這是我會鼓勵的。 – nanestev

+0

恐怕重新思考整個計劃是不可能的,因爲表'#tableX'正在採取1:從Excel文件1。我希望有可能得到指定從這些表中的數據有些聰明的解決方案,但如果它不是,那麼我住在EXEC查詢。 – Monic