1

我有一个关于我尝试在 sql server 中组合两个表的问题......

我有一个大约有 30 列的表(表 a),还有一个大约有 5 列的表(表 b),这 5 个表存在于 30 列的表中。我希望能够将表 b 添加到表 a 的末尾,并且只对新行中不存在的列使用 0 值。

有没有办法做到这一点?显然,如果我想将其他列保留在表 a 中,则常规联合将不起作用。

4

2 回答 2

3

基本思想是这样的,假设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
于 2012-08-14T16:36:45.270 回答
0

您可以将行插入:

insert into A(col1, col2, col3, col4, col5)
    select col1, col2, col3, col4, col5
    from B

这将为其余列应用默认值。默认值通常为 NULL,但可以在 create table 语句中更改。为了获得 0,您必须包含列并指定值:

insert into A(col1, col2, col3, col4, col5, col6 . . . col30)
    select col1, col2, col3, col4, col5, 0 . . . 0
    from B
于 2012-08-14T17:52:30.733 回答