选择仅与另一个表的行数据匹配的列。
示例:
表1
-----------
A B C D
-----------
1 2 3 4
3 4 4 4
表2
-----------
columns
-----------
A
D
我想查看以下结果
A D
-----
1 4
3 4
答案 0 :(得分:0)
如果您的dbms是MySQL,请使用动态sql,如下所示:
select group_concat(columns) into @cols from table2;
prepare dynsql from concat('select ', @cols, ' from table1');
execute dynsql;
答案 1 :(得分:0)
如果您的DBMS是MS SQL Server
,则使用dynamic SQL
,如下所示-
declare @x varchar(100) = ''
select @x = @x + ',' + quotename([columns]) from #T2
select @x = stuff(@x,1,1,'')
exec ('select ' + @x + ' from #T1')
您可以用表名替换#T1
和#T2
。
我已经创建了临时表来测试我的代码,如下所示-
create table #T1 (A int, B int, C int, D int);
insert into #T1
select 1,2,3,4 union
select 5,6,7,8
create table #T2 ([columns] char)
insert into #T2
select 'A' union select 'D'
select * from #T1
select * from #T2