我有一个关于我的企图两个表中的SQL Server相结合的一个问题...
我有一个具有约30列(表一),并具有约5(表b)第二表,这些5存在于30列的表一个表。 我希望能够添加表B与表A的结束,只是使用0值在新行不存在的列。
有没有办法做到这一点? 显然,一个普通的工会工作,难道不,如果我想保持其他列在表中。
我有一个关于我的企图两个表中的SQL Server相结合的一个问题...
我有一个具有约30列(表一),并具有约5(表b)第二表,这些5存在于30列的表一个表。 我希望能够添加表B与表A的结束,只是使用0值在新行不存在的列。
有没有办法做到这一点? 显然,一个普通的工会工作,难道不,如果我想保持其他列在表中。
其基本思路是这样的,假设col3
中不存在TableB
:
select col1, col2, col3 from TableA
union all
select col1, col2, 0 as col3 from TableB
要小心,以保持数据类型的每一列中的相同。
为了保持TableB
记录在最后,这样做:
select col1, col2, col3
from (
select 1 as Rank, col1, col2, col3 from TableA
union all
select 2 as Rank, col1, col2, 0 as col3 from TableB
) a
order by Rank
您只需插入行中:
insert into A(col1, col2, col3, col4, col5)
select col1, col2, col3, col4, col5
from B
这将适用的默认值剩余的列。 默认值通常是空的,但在创建表的语句可以被改变。 为了得到0,你就必须包含的列,并指定值:
insert into A(col1, col2, col3, col4, col5, col6 . . . col30)
select col1, col2, col3, col4, col5, 0 . . . 0
from B