ITPub博客

首页 > 数据库 > Oracle > 关于外连接和where条件

关于外连接和where条件

原创 Oracle 作者:llnnmc 时间:2018-10-11 18:10:23 0 删除 编辑

在外连接中,where后出现的表等同于内连接,因此,如果用了where条件,就应当将left join改为inner join。以下测试验证了这点。

with tab_a as
(
select 1 id1, 11 id2 from dual union all
select 2 id1, 22 id2 from dual union all
select 3 id1, 33 id2 from dual
), tab_b as
(
select 1 id1, 11 id2 from dual union all
select 2 id1, 22 id2 from dual union all
select 4 id1, 44 id2 from dual
)
select a.*, b.*
from tab_a a
left join tab_b b on a.id1 = b.id1
where b.id1 <> 4;

结果是没有3的
       ID1        ID2        ID1        ID2
---------- ---------- ---------- ----------
         1         11          1         11
         2         22          2         22

如果不加where条件
with tab_a as
(
select 1 id1, 11 id2 from dual union all
select 2 id1, 22 id2 from dual union all
select 3 id1, 33 id2 from dual
), tab_b as
(
select 1 id1, 11 id2 from dual union all
select 2 id1, 22 id2 from dual union all
select 4 id1, 44 id2 from dual
)
select a.*, b.*
from tab_a a
left join tab_b b on a.id1 = b.id1
--where b.id1 <> 4;

结果是包含3的
       ID1        ID2        ID1        ID2
---------- ---------- ---------- ----------
         1         11          1         11
         2         22          2         22
         3         33


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28974745/viewspace-2216092/,如需转载,请注明出处,否则将追究法律责任。

下一篇: merge into基本用法
请登录后发表评论 登录
全部评论

注册时间:2016-12-29

  • 博文量
    90
  • 访问量
    58102