[英]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;
干杯。
您需要使用一些動態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.