在2个表之间查询,合并结果。 PostgreSQL的

时间:2014-05-28 17:32:05

标签: sql postgresql

这是我的情景:

TAB1:

id  value
1   x
2   y
3   z

TAB2:

id  value
2   o

输出:

id  value
1   x
2   o
3   z

我需要从两个表中提取值并合并结果。 如果Tab1中包含一个ID,我也需要在输出中替换该值。

2 个答案:

答案 0 :(得分:4)

SELECT Tab1.id
 , COALESCE(Tab2.value, Tab1.value ) AS the_value
FROM Tab1 
LEFT JOIN Tab2 ON Tab1.id = Tab2.id
    ; 

答案 1 :(得分:0)

以下是查询的SQL Fiddle

SELECT Tab1.id, CASE WHEN Tab2.value IS NULL THEN Tab1.value ELSE Tab2.value END
FROM Tab1 
LEFT JOIN Tab2 ON Tab1.id = Tab2.id  

如果Tab2中的记录可能不在Tab1中,那么您可以使用以下内容(SQL Fiddle):

SELECT CASE WHEN Tab1.id IS NULL THEN Tab2.id ELSE Tab1.id END,
       CASE WHEN Tab2.value IS NULL THEN Tab1.value ELSE Tab2.value END
FROM Tab1 
FULL JOIN Tab2 ON Tab1.id = Tab2.id;

或者

SELECT COALESCE(Tab2.id, Tab1.id) AS id, 
       COALESCE(Tab2.value, Tab1.value) AS tvalue
FROM Tab1 
FULL JOIN Tab2 ON Tab1.id = Tab2.id;