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 的一些值。还尝试了右连接,完全连接......任何指针如何做到这一点?
嗯。 . .这是你想要的吗?假设 a
和 b
具有相同的列:
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
语句的结果集。
我需要 Table A 的所有条目和 Table B 的所有条目,这些条目对 table A 不常见。我有 6 个公共字段。我该怎么办?我尝试了 select ... 来自 Table A 左连接 Table B,它错过了来自 Table A 的一些值。还尝试了右连接,完全连接......任何指针如何做到这一点?
嗯。 . .这是你想要的吗?假设 a
和 b
具有相同的列:
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
语句的结果集。