我有三个表,有一个都有一个字段id 且三个表中id 都是唯一的现在如下关联三表 select count(*)
                 from a, b,c
                 where a.id = b.id(+)
                 and   a.id = c.id(+)
                 and   a.num > 1000 
结果为 357596              但这样关联:
          
         select count(*) from 
               
             (  select a.id
                 from a, b
                 where a.id = b.id(+)
                 and   a.num > 1000 
                ) t  ,c
             where t.id = c.id(+)出来的结果为 357597为什么?后来,我为了发现问题,将两个结果的id全给输出来了,发现后者多出来的那个ID,是在C表中没有的ID,而在A表和B表中都有的
但我明明在第一种情况中加上了左关联啊。为什么没有出来呢?
难道三个表同时左连接会出来数据丢失?请高手帮解答一下,谢谢!
 

解决方案 »

  1.   

    对比2个SQL的执行计划看一下区别。
      

  2.   

    我发现问题所在,这样会丢失一部份数据,先关联再用条件要比先条件再关联要少一些数据,就是A表有B表没有
    的,因为A与B左连接后,如果B无数据的话,大表B的字段为空,这时再用条件,这整条记录就被掉了。谢谢楼上的兄弟,我搞了半天,这个问题!