oracle 的 sql 全连接表以不在

标签: sql Oracle
发布时间: 2017/4/15 18:24:17
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

每一列 (id) 有过程表 (基于和 tblb) 表︰

选择 * 从基于;

ID
---
1
3
5#A

select * from tblb;

ID
---
2
3

现在我需要一个完整的联接︰

select a.id, b.id
from tbla a
full outer join tblb b on b.id = a.id;

ID  ID1
--------
1   
3   3
5#A 
    2

......,但没有包含在 tbla.id # 符号条目

select a.id, b.id
from tbla a
full outer join tblb b on b.id = a.id
where a.id not like '%#%';

ID  ID1
--------
1   
3   3

为什么是具有 id 2 从 tblb 失踪的条目?

解决方法 1:

因为当你这么做 full outer join ,两边列可以结束与 NULL 的值。

显式检查 null 值︰

select a.id, b.id
from tbla a
full outer join tblb b on b.id = a.id
where a.id not like '%#%' or a.id is null;

(最初,我曾建议移动到逻辑 on 子句。 唉, full outer join 记录两个表中,即使没有记录匹配条件。 所以,移动到条件 on 子句不能解决任何事情.)

赞助商