SQL选择列仅与另一个表列的行匹配

时间:2019-05-01 05:01:39

标签: sql

选择仅与另一个表的行数据匹配的列。

示例:

表1

-----------
A  B  C  D 
-----------
1  2  3  4
3  4  4  4

表2

-----------
columns
-----------
A
D

我想查看以下结果

A  D
-----
1  4
3  4

2 个答案:

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