我的问题很简单,我只想将两个表合并为一个表而无需任何PK 第一张桌子完全不同,它们没有什么不同
table1. table2.
|в|q| |@|John |
|ы|a| |£|Sara |
|в|f| |$|ciro |
|с|g| |%|Jo. |
|ф|s|
我需要的是这个
Table3
|в|q|@|John |
|ы|a|£|Sara |
|в|f|$|ciro |
|с|g|%|Jo. |
|ф|s|-|- |
答案 0 :(得分:1)
这有点复杂。您需要一个“垂直”列表,但没有匹配的列。您可以使用row_number()
和union all
:
select max(t1_col1), max(t1_col2), max(t2_col1), max(t2_col2)
from ((select t1.col1 as t1_col1, t1.col2 as t1_col2,
null as t2_col1, null as t2_col2, row_number() over () as seqnum
from table1 t1
) union all
(select null, null, t2.col1, t2.col2, row_number() over () as seqnum
from table2 t2
)
) t
group by seqnum;
Here是db <>小提琴。
请注意,这将保留两个表中的所有行,无论哪个行较长。每列中各行的具体顺序不确定。 SQL表表示无序集。如果您希望按特定的顺序排列商品,则需要指定一列的顺序。
如果要将其保存在新表中,请将create table as table3
放在select
之前。如果要插入现有表中,请使用insert
。