我想查询名称来自查询的所有表中的列。
这样的事情:
SELECT [COLUMN_NAME] FROM (SELECT FKTABLE_NAME FROM @temp_table)
这会产生语法错误,有没有办法做到这一点?
答案 0 :(得分:0)
假设所有可能表中的数据都是相同的格式(即相同顺序的相同数据类型),您可以执行类似的操作(可能不是世界上最有效的解决方案,而是解决方案) :
create table #FK_Names(tab varchar(50))
insert into #FK_Names values ('#tab1')
insert into #FK_Names values ('#tab2')
create table #tab1(id int)
create table #tab2(id int)
insert into #tab1 values (1)
insert into #tab1 values (2)
insert into #tab1 values (3)
insert into #tab2 values (4)
insert into #tab2 values (5)
insert into #tab2 values (6)
/*You want the part following this comment */
create table #temp (id int)
declare tabCursor insensitive cursor for select * from #FK_Names
declare @tabName varchar(100)
open tabCursor
fetch from tabCursor into @tabName
while @@fetch_status = 0
begin
declare @cmd nvarchar(max)
set @cmd ='insert into #temp select * from ' + @tabName
EXECUTE sp_executesql @cmd
fetch next from tabCursor into @tabName
end
close tabCursor
deallocate tabCursor
select * from #temp