这是我的情景:
TAB1:
id value
1 x
2 y
3 z
TAB2:
id value
2 o
输出:
id value
1 x
2 o
3 z
我需要从两个表中提取值并合并结果。 如果Tab1中包含一个ID,我也需要在输出中替换该值。
答案 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;