我有這個疑問在SQL Server:SQL Server - select into from語句?
select column
from table_53;
現在,我想從另一個表獲得此53,所以我想要做的是這樣的:
select column
from table_(select id from table2);
有什麼在SQL Server中執行此操作的方法?
我有這個疑問在SQL Server:SQL Server - select into from語句?
select column
from table_53;
現在,我想從另一個表獲得此53,所以我想要做的是這樣的:
select column
from table_(select id from table2);
有什麼在SQL Server中執行此操作的方法?
這裏需要動態sql查詢。
declare @sqlQuery = 'select column
from table_(';
set @sqlQuery = @sqlQuery + 'select id from table2)';
EXEC (@sqlQuery)
注: - 一個使用動態SQL查詢的缺點是SQL注入。我會建議有更好的表結構或嘗試使用參數化查詢。
這絕對不是SQL思考和工作的方式。也許你的建議方法可以通過編寫存儲過程的方式來模擬,在這些過程中你可以創建SQL語句,然後對其進行評估。但是,這不會非常有效。
更好的方法是將所有單獨的獨立表格的值存儲到一個主表格中,並將它們標記在單獨的列tblid
及其編號中(例如53
)。然後,您可以始終通過查找此tblid
從主表中篩選它們。
完全同意「SQL認爲和工作」。試想一下這個「設計」可以創造什麼?! – trailmax
是的,你可以,但使用這樣的事情:
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);
爲什麼你的表ID存儲在表中? –
我覺得這裏的DB設計很差。但'sp_executesql'可以幫助你:https://msdn.microsoft.com/en-us/library/ms188001.aspx – trailmax
[Table name as variable]可能的重複(http://stackoverflow.com/questions/2838490/table-name-as-variable) – JamieD77