合并许多表

时间:2013-03-18 20:24:31

标签: sql postgresql full-outer-join

假设有以下三个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

感谢您的帮助!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

由于您只想在结果中使用id列一次,显而易见的选择是使用USING子句的等值连接:

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

这样你根本不需要COALESCE - 这会很快弄乱很多桌子。

-> SQLfiddle demo