在 1 列中插入 3 列 SQL
Insert 3 columns in 1 columns SQL
我有一个包含 3 列(COLUMN 01、COLUMN 02、COLUMN 03)的旧 table,我需要迁移到包含 1 列 (VALUE) 的新 table 怎么办?我尝试了 Union 但它不起作用 ...
通用方法使用 insert ... select
和 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
可以更有效地完成此操作,因此 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;
我有一个包含 3 列(COLUMN 01、COLUMN 02、COLUMN 03)的旧 table,我需要迁移到包含 1 列 (VALUE) 的新 table 怎么办?我尝试了 Union 但它不起作用 ...
通用方法使用 insert ... select
和 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
可以更有效地完成此操作,因此 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;