我目前正在处理两个表。每个都有一个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 join
与coalesce
一起使用,如下所示:
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);