查询返回的查询表

Query tables returned by query

我想查询所有表中的列,其名称是从查询中获得的。

像这样:

SELECT [COLUMN_NAME] FROM (SELECT FKTABLE_NAME FROM @temp_table)

虽然这给出了语法错误,有没有办法做到这一点?

假设所有可能的表中的数据都是相同的格式(即相同顺序的相同数据类型),你可以这样做(可能不是世界上最有效的解决方案,但解决方案):

    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