查询返回的查询表

时间:2015-02-02 18:28:37

标签: sql sql-server-2008-r2

我想查询名称来自查询的所有表中的列。

这样的事情:

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

这会产生语法错误,有没有办法做到这一点?

1 个答案:

答案 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