在oracle中查询a表有3839条数据
b表有3974条数据
a.f=b.f关联时有3773条数据
a.f(+)=b.f关联时有3974条数据
a.f=b.f(+)关联时有3773条数据问题是a.f=b.f(+)为什么是3773条数据而不是3839条数据?如何关联才能保证取到a表的所有数据?解决问题者一定给分.
b表有3974条数据
a.f=b.f关联时有3773条数据
a.f(+)=b.f关联时有3974条数据
a.f=b.f(+)关联时有3773条数据问题是a.f=b.f(+)为什么是3773条数据而不是3839条数据?如何关联才能保证取到a表的所有数据?解决问题者一定给分.
a b
3773 = 3773
66 201即
a,b可以严格关联的为3773条数据
a中66条数据和b无法严格关联
b中201条数据无法与a严格关联现在
a.f=b.f 3773
a.f(+)=b.f 3974
a.f=b.f(+) 3773???<===应该是3839吧?我都要疯掉了!!!
where a.f=b.f(+)
and b.xx=....
的形势,结果关联后的完整数据被过滤了一部分,而如果我用
from a,
(
select *
from b
where b.xx=...
) c
where a.f=c.f(+)
就不会被过滤.一个不小心结果折腾了半天.
看来oracle是先做关联再过滤的,估计要先在内部过滤完了再关联比边关联边过滤要有效率些.谢谢大家帮忙,晚上结帐.