在 1 列中插入 3 列 SQL

Insert 3 columns in 1 columns SQL

我有一个包含 3 列(COLUMN 01、COLUMN 02、COLUMN 03)的旧 table,我需要迁移到包含 1 列 (VALUE) 的新 table 怎么办?我尝试了 Union 但它不起作用 ...

通用方法使用 insert ... selectunion all:

insert into newtable (value)
select column01 from oldtable
union all select column02 from oldtable
union all select column03 from oldtable

在 Oracle 中,使用 cross apply 可以更有效地完成此操作,因此 table 仅扫描一次而不是三次:

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

如果您想合并旧 table 中的列并将合并后的值迁移到新 table 中的一个列中,您可以执行以下操作。

INSERT INTO NEW_TABLE (VALUE)
SELECT CONCAT(COLUMN01, " ", COLUMN02, " ", COLUMN03)
FROM OLD_TABLE;