【问题标题】:Inserting data from two tables which may have matching columns从可能具有匹配列的两个表中插入数据
【发布时间】:2013-07-23 19:01:33
【问题描述】:
我有 3 个表:Tbl1、Tbl2 和 Tbl3。
Tbl3 的结构使得 Tbl3 中的大多数列都存在于Tbl2 + Tbl1 中。
我不知道哪些列匹配,哪些不匹配。
我想将来自Tbl1 和Tbl2 的数据插入到Tbl3。
有没有办法确定与Tbl3匹配的列名,然后从Tbl1和Tbl2中插入数据?
可能的表结构如下:
Tbl1 ---> Column1 |第 2 列 | Column3 |.... Column78
Tbl2 ---> Column79 |专栏80 |第 81 列 |.... 第 100 列
Tbl3 ---> Column1 |第 2 列 |第 3 列 |.... 第 100 列 |专栏101 |
第 102 列...第 120 列
【问题讨论】:
标签:
sql
sql-server
sql-server-2008
tsql
【解决方案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';
有了这些信息,您就可以构建您想要的查询。