从两个可能具有匹配列的表中插入数据

时间:2013-07-24 10:44:29

标签: sql sql-server sql-server-2008 tsql

我有3个表:Tbl1Tbl2Tbl3

Tbl3具有这样的结构:Tbl3中的大多数列存在于Tbl2 + Tbl1中。

我不知道哪些列匹配,哪些列不匹配。

我想将Tbl1Tbl2的数据插入Tbl3

有没有办法确定与Tbl3匹配的列名,然后从Tbl1和Tbl2插入数据?

表的可能结构如下:

  

Tbl1 ---> Column1 | Column2 | Column3 | .... Column78

     

Tbl2 --->第79列|第80列|第81栏...... ....第100栏

     

Tbl3 ---> Column1 | Column2 | Column3 | .... Column100 | Column101 |   第102列......第120栏

1 个答案:

答案 0 :(得分:1)

您可以从INFORMATION_SCHEMA.columns获取列名称。然后,您必须自己手动创建查询:

select tbl3.table_name,
       (case when ct1.TABLE_NAME is not null then 'Y' else 'N' end) as InTbl1,
       (case when ct2.TABLE_NAME is not null then 'Y' else 'N' end) as InTbl2
from INFORMATION_SCHEMA.columns ct3 left outer join
     INFORMATION_SCHEMA.columns ct1
     on ct1.COLUMN_NAME = ct3.COLUMN_NAME and
        ct1.TABLE_NAME = 'tbl1' left outer join
     INFORMATION_SCHEMA.columns ct2
     on ct2.COLUMN_NAME = ct3.COLUMN_NAME and
        ct2.TABLE_NAME = 'tbl2' left outer join
where ct3.TABLE_NAME = 'tbl3';

使用此信息,您可以构建所需的查询。

相关问题