两张桌子合二为一?
two tables into one?
我的问题很简单,就是想把两个table拼成一个table,不PK
首先 table 完全不同 他们没有任何相同之处
table1. table2.
|в|q| |@|John |
|ы|a| |£|Sara |
|в|f| |$|ciro |
|с|g| |%|Jo. |
|ф|s|
我需要的是这个
Table3
|в|q|@|John |
|ы|a|£|Sara |
|в|f|$|ciro |
|с|g|%|Jo. |
|ф|s|-|- |
这有点复杂。您想要一个 "vertical" 列表,但没有任何内容可以匹配列。您可以使用 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<>fiddle.
请注意,这将保留两个 table 中的所有行,无论哪一个更长。每列中的行的特定顺序是不确定的。 SQL table 表示 无序 集合。如果您想要按特定顺序排列的东西,则需要一个指定顺序的列。
如果要将其保存在新的 table 中,请将 create table as table3
放在 select
之前。如果要插入现有的 table,请使用 insert
.
我的问题很简单,就是想把两个table拼成一个table,不PK 首先 table 完全不同 他们没有任何相同之处
table1. table2.
|в|q| |@|John |
|ы|a| |£|Sara |
|в|f| |$|ciro |
|с|g| |%|Jo. |
|ф|s|
我需要的是这个
Table3
|в|q|@|John |
|ы|a|£|Sara |
|в|f|$|ciro |
|с|g|%|Jo. |
|ф|s|-|- |
这有点复杂。您想要一个 "vertical" 列表,但没有任何内容可以匹配列。您可以使用 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<>fiddle.
请注意,这将保留两个 table 中的所有行,无论哪一个更长。每列中的行的特定顺序是不确定的。 SQL table 表示 无序 集合。如果您想要按特定顺序排列的东西,则需要一个指定顺序的列。
如果要将其保存在新的 table 中,请将 create table as table3
放在 select
之前。如果要插入现有的 table,请使用 insert
.