【发布时间】:2020-11-10 22:19:43
【问题描述】:
我必须通过几列加入 2 个表 (Oracle):A 和 B:
A.C1 = B.C1
A.C2 = B.C2
如果条件失败,那么我应该尝试以不那么苛刻的条件加入
A.C1 = B.C1
它对我有用吗:
SELECT a.*, b.* FROM A JOIN B ON
(A.C1 = B.C1 AND A.C2 = B.C2) OR (A.C1 = B.C1)
提前谢谢你!
【问题讨论】:
-
您的查询等同于
SELECT a.*, b.* FROM A JOIN B ON A.C1 = B.C1,因为另一个条件是该条件的子集。 -
@TonyAndrews - 还没有。 B 中可能有几条 A.C1 = B.C1 的记录,并且只有一条 A.C2 = B.C2。在这种情况下,我将获取这条记录。如果我将我的条件简化为 A.C1 = B.C1,那么我将获得所有提到的记录。我说的对吗?
-
不,因为 OR 包含在内 - 您将获得 B 中的所有记录
A.C1 = B.C1和一条记录A.C1 = B.C1 AND A.C2 = B.C2,无论如何您都会得到!
标签: sql oracle join where-clause