您的位置:首页 > 数据库 > Oracle

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

2015-10-31 22:36 190 查看
       今天遇到一个外链接加上过滤条件导致外链接失效(也就是没有起作用 ),虽然是个小问题,但是自己之前真的没有在意,今天记一下顺便温习一下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博客 ” ,链接:http://blog.itpub.net/28473562/viewspace-1819942/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28473562/viewspace-1819942/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: