是否可以将所有数据从一个表复制到另一个表,还有一个额外的列?

时间:2012-10-26 15:07:45

标签: sql oracle

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

如果不是额外的列,这将有效:

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

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

感谢您的帮助!

5 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

你试过这个吗?

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

在我的电脑上运行: - )

答案 3 :(得分:1)

INSERT INTO tableA SELECT a.*,<VALUE FOR THE EXTRA COLUMN> FROM tableB a

例如,如果tableA中的额外列是sys_creation_date,那么

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

OR

INSERT INTO tableA SELECT a.*,'10-Jan-2013' FROM tableB a

答案 4 :(得分:0)

您可以从TableB

中选择一个常量
INSERT INTO tableA( col1, col2, col3, col4 )
  SELECT col1, col2, col3, 1 col4
    FROM tableA