4

我有两张略有不同的桌子。表 A 有 4 列,表 B 只有 3 列。我想将表 B 中的所有数据复制到表 A 中,但我还想用1每一行的值填充额外的列。

如果不是额外的列,这将起作用:

insert into TABLEA (COL1, COL2, COL3) select COL1, COL2, COL3 from TABLEB;

不幸的是,表 A 中的额外列不可为空,所以我不能在之后运行更新。

谢谢你的帮助!

4

5 回答 5

11

指定列并使用常量作为值(请注意,您可以在 select 子句中混合使用常量和列引用)。在这种情况下,我们指定每一行都将获得1column的常量COL4

insert into TABLEA (COL1, COL2, COL3, COL4)
select COL1, COL2, COL3, 1
from TABLEB;
于 2012-10-26T15:08:28.953 回答
2
insert into TABLEA (COL1, COL2, COL3, extra) 
select COL1, COL2, COL3, 1 
from TABLEB;
于 2012-10-26T15:08:49.310 回答
1

你试过这个吗?

insert into TABLEA (COL1, COL2, COL3, COL4) select COL1, COL2, COL3, 'Whatever' as COL4 from TABLEB;

在我的电脑上工作:-)

于 2012-10-26T15:13:54.533 回答
1
INSERT INTO tableA SELECT a.*,<VALUE FOR THE EXTRA COLUMN> FROM tableB a

例如,如果额外的列tableAsys_creation_date

INSERT INTO tableA SELECT a.*,sysdate FROM tableB a

或者

INSERT INTO tableA SELECT a.*,'10-Jan-2013' FROM tableB a
于 2013-12-10T18:59:07.510 回答
0

您可以从TableB

INSERT INTO tableA( col1, col2, col3, col4 )
  SELECT col1, col2, col3, 1 col4
    FROM tableA
于 2012-10-26T15:08:42.727 回答