首页 > 解决方案 > 完全外连接类似功能但合并列

问题描述

表A

id  | symbolA
 1       m
 2       n
 4       o

表B

id  | symbolB
 2       p
 3       q
 5       r

我想要以下结果:

id    |  symbolA     | symbolB
2          n              p
1          m              NULL
4          o              NULL
3          NULL           q
5          NULL           r

这是我已经尝试过的:

SELECT
  TableA.id,
  TableB.id,
  TableA.symbolA,
  TableB.symbolB
FROM
  TableA
FULL OUTER JOIN
  TableB
ON
  TableA.id = TableB.id


NewTable
TableA.id | TableA.symbolA | TableB.id | TableA.symbolB
    2             n             2               p
    1             m             NULL            NULL
    4             o             NULL            NULL
    NULL       NULL             3               q
    NULL       NULL             5               r

我已经尝试过结合合并的完整外部连接,但它并没有完全给我上述所需的输出。该语言是 BigQuery,尽管我希望我的请求没有任何特殊之处,不会使其与 SQL 语言无关。谢谢。

标签: sqljoinmergegoogle-bigqueryfull-outer-join

解决方案


你快到了。您只需要合并这两id列。

为此,您可以使用coalesce()

select
    coalesce(a.id, b.id) id,
    a.symbola,
    b.symbolb
from tablea a
full outer join tableb b on a.id = b.id

以下连接的语法也using应该有效(大多数支持的数据库都full join允许这样做):

select
    id,
    a.symbola,
    b.symbolb
from tablea a
full outer join tableb b using(id)

推荐阅读