SQL Server的联合功能?(SQL Server union functionality?)

2019-10-17 03:35发布

我有一个关于我的企图两个表中的SQL Server相结合的一个问题...

我有一个具有约30列(表一),并具有约5(表b)第二表,这些5存在于30列的表一个表。 我希望能够添加表B与表A的结束,只是使用0值在新行不存在的列。

有没有办法做到这一点? 显然,一个普通的工会工作,难道不,如果我想保持其他列在表中。

Answer 1:

其基本思路是这样的,假设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


Answer 2:

您只需插入行中:

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


文章来源: SQL Server union functionality?