我有两张略有不同的桌子。表 A 有 4 列,表 B 只有 3 列。我想将表 B 中的所有数据复制到表 A 中,但我还想用1
每一行的值填充额外的列。
如果不是额外的列,这将起作用:
insert into TABLEA (COL1, COL2, COL3) select COL1, COL2, COL3 from TABLEB;
不幸的是,表 A 中的额外列不可为空,所以我不能在之后运行更新。
谢谢你的帮助!
指定列并使用常量作为值(请注意,您可以在 select 子句中混合使用常量和列引用)。在这种情况下,我们指定每一行都将获得1
column的常量COL4
。
insert into TABLEA (COL1, COL2, COL3, COL4)
select COL1, COL2, COL3, 1
from TABLEB;
insert into TABLEA (COL1, COL2, COL3, extra)
select COL1, COL2, COL3, 1
from TABLEB;
你试过这个吗?
insert into TABLEA (COL1, COL2, COL3, COL4) select COL1, COL2, COL3, 'Whatever' as COL4 from TABLEB;
在我的电脑上工作:-)
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
或者
INSERT INTO tableA SELECT a.*,'10-Jan-2013' FROM tableB a
您可以从TableB
INSERT INTO tableA( col1, col2, col3, col4 )
SELECT col1, col2, col3, 1 col4
FROM tableA