从表中选择所有表,其中表名来自SQL中的另一个表

时间:2017-01-12 10:41:55

标签: sql select sql-server-2014

我有一个临时表,其中包含一个TableName列。我想循环遍历临时表并选择表中的所有内容(其中table是临时表中的TableName列)。

我一直在浏览以下链接和相关链接,但我无法根据自己的需要进行调整。非常感谢任何帮助。

我正在使用SQL Server 2014

我试过的东西

声明@id int 什么时候出现(SELECT * FROM ## tt_tableList) 开始 从## tt_tableList

中选择Top 1 @id = Id
-- Do the work --
declare @query nvarchar(max)
set @query = 'Select * from (select TableName from ##tt_tablelist where id = '' +Cast(@id as nvarchar(50))+'')'
select @query
declare @tableName nvarchar(50)
set @tableName = (select TableName from ##tt_tableList where id = @id)
select @tableName
execute(@query)
-- Scrap the ID and Move On --
Delete ##tt_tableList where ID = @id
END

2 个答案:

答案 0 :(得分:1)

如果我理解正确,这就是你要求的:

DECLARE @tbl table (TableName varchar(50))
insert into @tbl values ('SomeTableName')
insert into @tbl values ('AnotherTableName')


DECLARE @Tables VARCHAR(8000) 
SELECT @Tables = COALESCE(@Tables + CHAR(13), '') + 'SELECT * FROM '+ TableName 
FROM @tbl

exec(@Tables) 

只需在@tbl

中插入您的表名

答案 1 :(得分:0)

我根据我们其中一个堆栈overflower的回答尝试了这个,并且它有效。

DECLARE @Tables VARCHAR(8000) 
SELECT @Tables = COALESCE(@Tables + CHAR(13), '') + 'SELECT * FROM '+ TableName + ' Where Event like ''%CM_Manual_Change%'''
FROM ##tt_tableList 

select @Tables

exec(@Tables)