假设有以下三个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
感谢您的帮助!
答案 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
- 这会很快弄乱很多桌子。