簡體   English   中英

FOR中的SQL查詢動態表名稱

[英]SQL query dynamic table name in FOR

我有一個表tbl1 ,它有一個列tbl_names 此列包含其他一些表的名稱。
現在我想用以下格式編寫查詢:
select * from (select tbl_names from tbl1)

我知道上面的查詢不起作用,但我怎么能做到這一點? 我是否需要編寫存儲過程或類似的東西並循環第二個查詢的每個值並執行第一個查詢?

謝謝

您可以使用預准備語句

SET @a = (select tbl_names from tbl1);
SET @x := CONCAT('SELECT * FROM ', @a);
Prepare stmt FROM @x;
Execute stmt;
DEALLOCATE PREPARE stmt;

PREPARE語法

干杯。

您需要使用一些動態SQL。 使用要執行的查詢構建SQL字符串,然后調用exec(@sql)

完整示例:

declare cur cursor for
select tbl_names from tbl1

declare @sql varchar(100), @tbl varchar(100)

open cur

fetch cur into @tbl

while @@FETCH_STATUS = 0 begin
    set @sql = 'select * from ' + @tbl
    exec(@sql)
    fetch cur into @tbl
end

close cur
deallocate cur

只需在子查詢中添加一個pseudonim:

select * from (select tbl_names from tbl1) a;

祝好運 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM