在一段代码中,看到了下面的一段sql语句,搞了半天明白了(+)=相当于left outer join
但是(+)<>就弄不明白了,好像是老式的outer join语句,而且不能和left outer join混用SELECT *
FROM A,B
WHERE A.ID (+)= B.ID
AND A.origin(+)<>'U' 大家帮忙看看,谢谢了
但是(+)<>就弄不明白了,好像是老式的outer join语句,而且不能和left outer join混用SELECT *
FROM A,B
WHERE A.ID (+)= B.ID
AND A.origin(+)<>'U' 大家帮忙看看,谢谢了
<> 相当于 left outer join on aa.aa<>bb.bb 的不等号
又尝试了一下,发现在老式的<>还是有一些区别的建了两个表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完再过滤数据