SQL - 在使用NULL填充缺失值时使用JOIN

时间:2014-12-08 21:39:23

标签: sql postgresql join

我调查的最相关问题是this,但遗憾的是我没有找到解决问题的方法。

我有两个表,两个都有类似的列。唯一的区别是一列缺少一些值。我想加入表格,以便对于一列中的缺失值,连接将显示缺失值。

我提供了一个例子,因为这可能令人困惑 -

table 1            table 2
ID count           ID count
1  9               1  2
2  2               2  1
3  1

我希望结果是

table 3
ID count2 count1
1  2      9
2  1      2
3  NULL   1

但是,使用LEFT OUTER JOIN我只能在没有id 3行的情况下实现表“table 3”,因为它在表2中没有任何表示。

你能解决我的问题吗?

1 个答案:

答案 0 :(得分:2)

左连接适用于您的示例数据,我猜您想知道如果将ID为3的行移动到表2中该怎么做,以便您的查询将显示所有ID。要显示两个表中的所有行,请使用FULL OUTER JOIN

SELECT CASE WHEN t1.id IS NULL THEN t2.id ELSE t1.id END AS id,
    t2.count as count2, t1.count as count1
FROM t1
    FULL OUTER JOIN t2 ON t2.id = t1.id