Oracle:将两个具有不同列的表组合在一起
Posted
技术标签:
【中文标题】Oracle:将两个具有不同列的表组合在一起【英文标题】:Oracle: Combine Two Tables with Different Columns 【发布时间】:2017-03-15 16:54:29 【问题描述】:这是表 1:
col_1 col_2 date_1
----- ----- ------
1 3 2016
2 4 2015
这是表 2:
col_3 col_4 date_2
----- ----- ------
5 8 2014
6 9 2012
我想要这样的结果:
col_1 col_2 col_3 col_4 date_1 date_2
----- ----- ----- ----- ------ ------
1 3 NULL NULL 2016 NULL
2 4 NULL NULL 2015 NULL
NULL NULL 5 8 NULL 2014
NULL NULL 6 9 NULL 2012
有什么解决办法吗?
【问题讨论】:
加入、联合或联合都没有成功。 【参考方案1】:使用Union All
和Null
作为不同的列:
SELECT col_1, col_2, NULL as col_3, NULL as col_4,
date_1, NULL as date_2
FROM table_1
Union All
SELECT NULL, NULL, col_3, col_4, NULL, date_2
FROM table_2
【讨论】:
我们可以把这个结果合并成一行吗?【参考方案2】:使用连接:
select t1.col_1,t1.col_2,t2.col_3,t2.col_4,t1.date_1,t2.date_2
from t1
full join t2
on t1.col_1=t2.col_3
order by t1.col_1;
【讨论】:
【参考方案3】:使用union all
:
select col_1, col_2, NULL as col_3, NULL as col_4, date_1, NULL as date_2
from table1
union all
select NULL, NULL, col_3, col_4, NULL, date_2
from table2;
【讨论】:
以上是关于Oracle:将两个具有不同列的表组合在一起的主要内容,如果未能解决你的问题,请参考以下文章
仅将具有不同值的多个 GROUP_CONCAT() 的结果组合在一起
如何使用 SSMA(用于访问 SQL Server)将具有不同列的表迁移到现有表中?
如何合并具有不同列号的两个表,同时删除具有大量列的表的重复项
如何使用 Nhibernate 从连接两个具有所有 id 的表中选择只有一个不同列的多个列是 UNIQUEIDENTIFIER