-1

我有一个包含 3 列(COLUMN01、COLUMN02、COLUMN03)的旧表,我需要迁移到包含 1 列(VALUE)的新表怎么办?我尝试了一个联盟,但它不起作用......

4

2 回答 2

0

通用方法使用insert ... selectand 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 回答