1

假设有以下三个 PostgreSQL 表要与公共 ID 列合并。

table A  
ID V1
2  100
3  200
4  250

table B
ID V2
1  200
3  140

table C
ID V3
2  90
3  100
4  10
5  200

我想将这三个表合并如下:

merged table
ID V1   V2   V3
1       200  
2  100       90
3  200  140  100
4  250       10
5            200

我感谢您的帮助!

4

2 回答 2

1
    select A.*,B.V2,C.V3
    from 
    A 
    full outer join B on A.id = B.id
    full outer join C on C.id = coalesce(A.id,B.id)
于 2013-03-18T20:33:48.083 回答
1

由于您只希望 id 列在结果中出现一次,因此显而易见的选择是与USING子句等值连接:

SELECT id, v1, v2, v3
FROM   a 
FULL OUTER JOIN b USING (id)
FULL OUTER JOIN c USING (id)

这样你也根本不需要COALESCE- 这很快就会被很多桌子弄得一团糟。

-> SQLfiddle 演示

于 2013-03-18T21:40:37.823 回答