ITPub博客

首页 > 数据库 > Oracle > Oracle外链接查询遇上过滤条件后导致外链接失效

Oracle外链接查询遇上过滤条件后导致外链接失效

原创 Oracle 作者:vage_fang 时间:2015-10-31 22:36:05 0 删除 编辑
       今天遇到一个外链接加上过滤条件导致外链接失效(也就是没有起作用),虽然是个小问题,但是自己之前真的没有在意,今天记一下顺便温习一下oracle表连接:
SQL> select * from t1;
         A          B
---------- ----------
         1        101
         2        102
         3        103
         4        104
         5        105
         6        106
         7        107
         8        108
         9        109

SQL> select * from t2;
         C          D
---------- ----------
                 1001
         2       1002
                 1003
         4       1004
                 1005
         6       1006
                 1007
         8       1008
                 1009

SQL> select a,b,c,d from t1,t2 where t1.a=t2.c(+);   ---不加过滤条件,会得到下面的结果集
         A          B          C          D
---------- ---------- ---------- ----------
         2        102          2       1002
         4        104          4       1004
         6        106          6       1006
         8        108          8       1008
         5        105
         3        103
         1        101
         7        107
         9        109
SQL> select a,b,c,d from t1,t2 where t1.a=t2.c(+) and t2.d>1001;   --但是加了过滤调价t2.d>1001后发现直接外链接就没作用了
         A          B          C          D
---------- ---------- ---------- ----------
         2        102          2       1002
         4        104          4       1004
         6        106          6       1006
         8        108          8       1008

SQL> select a,b,c,d from t1,t2 where t1.a=t2.c(+) and t2.d(+)>1001;  ---改成t2.d(+)>1001,查询又会继续走外链接
         A          B          C          D
---------- ---------- ---------- ----------
         2        102          2       1002
         4        104          4       1004
         6        106          6       1006
         8        108          8       1008
         5        105
         3        103
         1        101
         7        107
         9        109


结论:当表连接使用外连接时,如果where字句包含多个条件,必须在所有条件中都增加(+)操作符,否则外链接很有可能直接不起作用的,
谨以此记录一下

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

请登录后发表评论 登录
全部评论

注册时间:2013-05-01

  • 博文量
    16
  • 访问量
    75214