where a = b(+)
是什么意思,那位高手给我通俗的讲一下。谢谢。

解决方案 »

  1.   

    类似于right join / left join显示b表的全部
      

  2.   

    返回行是
    a = b 的行 
     + 
    左表的a 在右表没有匹配的 b值的行(右表的列填null)就是返回a表的所有行
      

  3.   

    不知道你是不很熟悉Full join的概念 还是Oracle里全联接的syntax
    +是oracle里outer join的操作符号
    where a(+)=b 意思为 tablea right join tableb on a=b;
    EG:
     SQL>  select  test22.addr,test2.* from test2 right join test22 on  test2.id=test22.id;ADDR                         ID NAME
    -------------------- ---------- --------------------
    shanghai                      1 shen
    beijing                       2 liang
    nanjing                       3 hello
    tianjingSQL>  select  test22.addr,test2.* from test2,test22 where test2.id(+)=test22.id;ADDR                         ID NAME
    -------------------- ---------- --------------------
    shanghai                      1 shen
    beijing                       2 liang
    nanjing                       3 hello
    tianjingSQL> select * from test22;        ID ADDR
    ---------- --------------------
             1 shanghai
             2 beijing
             3 nanjing
            10 tianjingSQL> select * from test2;        ID NAME
    ---------- --------------------
             1 shen
             2 liang
             3 hello
             4 word
             5 java
             6 delphi
             7 c#
             8 Grails已选择8行。建议先看看Oracle里的帮助文档 Oracle官方网站 有的~~
    对于(+)可能直接用 full join 、right join、left join、inner join更好理解些 
    当然你研究着用,自然没问题的~~ 
      

  4.   

    理解oracle中的外连接
        术语定义   
         保留行表: 外连接条件中不包含+号的表
         注意:不包含+号的表是指在外连接条件中。 如下例所示:
            where   d.deptno(+)=10              无保留行表
            where   d.deptno(+)=70              无保留行表
            where   d.deptno=e.deptno(+)        d 是保留行表表
            where   d.deptno(+)=e.deptno        e 是保留行表表
            where   d.deptno=10                 不考虑,普通的连接条件
            where   d.deptno(+)=e.deptno and e.deptno(+)=10 无保留行表  d和e均包含了+号
               
            左外连接中左边的表。 
            右外连接中右边的表。 
            全外连接中全部的表。      替换 NULL 的表:
             左外连接中右边的表 
             右外连接中左边的表 
             全外连接中全部的表       在全外连接中,两张表既可以保留行,也可以替换 NULL。     当不存在匹配的行时,替换 NULL 的表替换 NULL。如果连接操作中不存在匹配,任何在 SELECT 列中引用的替换 NULL 表的列都将替换为NULL。