第二个表上的SQL联接显示两个表中一列的所有不同行

第二个表上的SQL联接显示两个表中一列的所有不同行,sql,Sql,这可能是一个非常简单的sql,但是对于我来说,我似乎无法得到想要的结果 为了便于说明,我有两个表,表A和表B,每个表中有以下记录 提前感谢您,对于这里的新手格式设置,我深表歉意 预期结果 您正在寻找的是完全加入: select id, a.col1, b.col2 from a full join b using (id); 如果您的数据库不支持完全加入,我建议: select a.id, a.col1, b.col2 from a left join b

这可能是一个非常简单的sql,但是对于我来说,我似乎无法得到想要的结果

为了便于说明,我有两个表,表A和表B,每个表中有以下记录

提前感谢您,对于这里的新手格式设置,我深表歉意

预期结果


您正在寻找的是
完全加入

select id, a.col1, b.col2
from a full join
     b
     using (id);
如果您的数据库不支持
完全加入
,我建议:

select a.id, a.col1, b.col2
from a left join
     b
     on a.id = b.id
union all
select b.id, null, b.col2
from b
where not exists (select 1 from a where a.id = b.id);

用你正在使用的数据库标记你的问题。谢谢戈登·林诺夫。它工作得很好。现在我需要能够使用您的方法连接其他表(大约8个其他表)。@Ropeh。如果联接列相同,则可以扩展
完全联接
,并继续使用
using
。您好。再次感谢你刚才对我问题的回答。如果可以问一个后续问题,假设我有大约四个要组合的表,我该如何构造查询?@Ropeh。也许您应该问一个新问题,包括示例数据、期望的结果和适当的数据库标记。