2016-01-07 270 views
0

我有這個疑問在SQL Server:SQL Server - select into from語句?

select column 
from table_53; 

現在,我想從另一個表獲得此53,所以我想要做的是這樣的:

select column 
from table_(select id from table2); 

有什麼在SQL Server中執行此操作的方法?

+1

爲什麼你的表ID存儲在表中? –

+0

我覺得這裏的DB設計很差。但'sp_executesql'可以幫助你:https://msdn.microsoft.com/en-us/library/ms188001.aspx – trailmax

+1

[Table name as variable]可能的重複(http://stackoverflow.com/questions/2838490/table-name-as-variable) – JamieD77

回答

0

這裏需要動態sql查詢。

declare @sqlQuery = 'select column 
from table_('; 

set @sqlQuery = @sqlQuery + 'select id from table2)'; 

EXEC (@sqlQuery) 

注: - 一個使用動態SQL查詢的缺點是SQL注入。我會建議有更好的表結構或嘗試使用參數化查詢。

1

這絕對不是SQL思考和工作的方式。也許你的建議方法可以通過編寫存儲過程的方式來模擬,在這些過程中你可以創建SQL語句,然後對其進行評估。但是,這不會非常有效。

更好的方法是將所有單獨的獨立表格的值存儲到一個主表格中,並將它們標記在單獨的列tblid及其編號中(例如53)。然後,您可以始終通過查找此tblid從主表中篩選它們。

+0

完全同意「SQL認爲和工作」。試想一下這個「設計」可以創造什麼?! – trailmax

0

是的,你可以,但使用這樣的事情:

DECLARE @ID INT; 
DECLARE @QUERY NVARCHAR(MAX); 

SELECT @ID = ID FROM TABLE_2; 
--IF @ID EQUALS 53 THEN 
SET @QUERY = 'SELECT COLUMN FROM TABLE_' + CAST(@ID AS NVARCHAR(10)); 
-- @QUERY EQUALS TO 'SELECT COLUMN FROM TABLE_53' 
EXEC (@QUERY);