我有两张表略有不同。表A有4列,表B只有3.我想将表B中的所有数据复制到表A中,但我还希望为每一行填充值为1
的额外列。
如果不是额外的列,这将有效:
insert into TABLEA (COL1, COL2, COL3) select COL1, COL2, COL3 from TABLEB;
不幸的是,表A中的额外列不可为空,因此我不能在之后运行更新。
感谢您的帮助!
答案 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