我有一个包含 3 列(COLUMN01、COLUMN02、COLUMN03)的旧表,我需要迁移到包含 1 列(VALUE)的新表怎么办?我尝试了一个联盟,但它不起作用......
问问题
40 次
2 回答
0
通用方法使用insert ... select
and union all
:
insert into newtable (value)
select column01 from oldtable
union all select column02 from oldtable
union all select column03 from oldtable
在 Oracle 中,使用 更有效地完成此操作cross apply
,因此该表只被扫描一次而不是 3 次:
insert into newtable (value)
select v.col
from oldtable o
cross apply (
select o.column01 col from dual
union all select o.column02 from dual
union all select o.column03 from dual
) v
于 2020-11-04T08:58:26.653 回答
0
如果您想合并旧表中的列并将合并后的值迁移到新表中的单个列中,您可以执行以下操作。
INSERT INTO NEW_TABLE (VALUE)
SELECT CONCAT(COLUMN01, " ", COLUMN02, " ", COLUMN03)
FROM OLD_TABLE;
于 2020-11-04T09:04:34.717 回答