SQL JOIN,所有来自 t1 和所有来自 t2 除了 t1 的共同点

SQL JOIN, all from t1 and all from t2 except what's common to t1

我需要 Table A 的所有条目和 Table B 的所有条目,这些条目对 table A 不常见。我有 6 个公共字段。我该怎么办?我尝试了 select ... 来自 Table A 左连接 Table B,它错过了来自 Table A 的一些值。还尝试了右连接,完全连接......任何指针如何做到这一点?

嗯。 . .这是你想要的吗?假设 ab 具有相同的列:

select a.*
from a
union all
select b.*
from b
where not exists (select 1
                  from a
                  where a.col1 = b.col1 and a.col2 = b.col2 and . . .
                 );

编辑:

SparkSQL 应该支持 not exists,但您可以使用 left join 来编写它:

select a.*
from a
union all
select b.*
from b left join
     a
     on a.col1 = b.col1 and a.col2 = b.col2 and . . .
where a.col1 is null;

我认为最简单的方法是使用这样的 UNION 运算符:

(SELECT * FROM TableA)
UNION
(SELECT * FROM TableB); 

联合运算符用于合并两个或多个 SELECT 语句的结果集。