oracle中外关联的解惑(六)

2014-11-24 09:00:54 · 作者: · 浏览: 4
-------------------------------------------------
29
30
Predicate Information (identified by operation id):
31
---------------------------------------------------
32
33
1 - access("A"="A3"(+))
34
3 - filter("B3"(+)='2')
就是它了,那和left join在on过滤主表一样的呢?我也不知道。
结论:oracle的"+"外关联,写法简单,但是,简单是有代价的,除了不能实现left join在on过滤主表的效果外,oracle对"+"外关联作了N多限制:
1、不能和join一起使用;
2、只能用在where子句或table子句中;
3、如果有多个关联条件,必须每个多使用"+",否则会当做普通关联,且没有提示;
4、如果你外关联的子表,又和另一个表做普通关联,那么也会变成普通关联;
5、不能单表自外关联,虽然自关联是可以的,可以以别名的方式,实现两张相同的表外关联;
6、"+"只能用于一个列名,不能是表达式,但是表达式中的列名可以用"+"; www.2cto.com
7、不能和or同时使用;
8、不能和in同时使用;
9、不能将一个标有"+"的列和一个子查询比较。
最后说明:外关联子表先过滤is null的写法:sub_table.column1 (+) is null 。
作者 hulubo