在一段代码中,看到了下面的一段sql语句,搞了半天明白了(+)=相当于left outer join
但是(+)<>就弄不明白了,好像是老式的outer join语句,而且不能和left outer join混用SELECT *
FROM A,B
WHERE A.ID (+)= B.ID
AND A.origin(+)<>'U' 大家帮忙看看,谢谢了

解决方案 »

  1.   

    = 号  相当于   left outer join on aa.aa=bb.bb 的等号
    <>    相当于  left outer join on aa.aa<>bb.bb  的不等号
      

  2.   

    谢谢1楼的回答,但是这样理解查询结果不一样
    又尝试了一下,发现在老式的<>还是有一些区别的建了两个表A,B
    A_ID       A
    ---------- -
    1          a
    2          aB_ID       B
    ---------- -
    1          b
    2          bselect *
    from A
    left outer join B
    on A.A_ID = B.B_ID
    where A.A_ID<>'2';select *
    from A,B
    where A.A_ID(+)=B.B_ID
    and A.A_ID(+)<>'2'这两个语句的查询结果不一样,分别是
    A_ID       A B_ID       B
    ---------- - ---------- -
    1          a 1          b
    A_ID       A B_ID       B
    ---------- - ---------- -
    1          a 1          b
                 2          b也就是说老式的查询是先过滤再进行outer join
    现在的都是先outer join完再过滤数据