基于主键合并两个表

时间:2016-11-07 15:38:09

标签: mysql sql

我有两个表,其中一些条目相同,例如 表A:

ID         value        type
1          1            2
2          3            2
3          3            2

表B:

ID        value        type
2          3            1
3          3            1 
4          1            1

我想合并它们,以便生成的表看起来像

表C:

ID        value        type
2          3            2
3          3            2
4          1            1

即,删除不在表A中的行,在表A中显示具有表A类型的重复行,并显示那些不在表A中的行。

直到现在我已经完成了UNION命令来删除重复的

 select * from table A union select * from table B

但如何从表A中获取类型?可以这样做,或者我必须单独更新它们。

2 个答案:

答案 0 :(得分:1)

您可以使用LEFT JOIN

执行此操作
SELECT b.id,b.value,
       COALESCE(a.type,b.type) as type
FROM TableB b
LEFT JOIN TableA a
 ON(a.id = b.id)

答案 1 :(得分:1)

这就是你想要的

select b.id, b.value, ifnull(a.type,b.type) as type
from b 
left join a 
on b.id = a.id;