在不丢失任何信息的情况下联接表



我目前正在处理两个表。每个都有一个ID字段和一个数据字段,但这两个ID列表不相同,但有一些重叠(这很好(。

TABLE 1
|---------------------|------------------|
|          ID         |        Data1     |
|---------------------|------------------|
|          1          |         34       |
|          2          |         40       |
|          3          |         60       |
TABLE 2
|---------------------|------------------|
|          ID         |        Data2     |
|---------------------|------------------|
|          3          |         100      |
|          2          |         101      |
|          7          |         102      |

我想要的是一个有3列的单表,如下所示:

TABLE 3
|---------------------|------------------|------------------|
|          ID         |        Data1     |        Data2     |
|---------------------|------------------|------------------|
|          1          |         34       |       null       |
|          2          |         40       |        40        |
|          3          |         60       |        100       |
|          7          |         null     |        102       |

我已经加入了很多俱乐部,但似乎没有得到我想要的结果,我真的很乐意接受关于这一点的建议。我在sql开发人员上使用oracle sql。

您需要将full outer joincoalesce一起使用,如下所示:

select coalesce(t1.id, t2.id), t1.data1, t2.data2 
from table1 t1 full outer join table2 t2
on (t1.id = t2.id)

干杯!!

我推荐full join。但是Oracle也支持using子句,这在这种情况下非常方便:

select id, t1.data1, t2.data2 
from table1 t1 full outer join
table2 t2
using (id);

相关内容

最新更新