我有三个表,有一个都有一个字段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表中都有的
但我明明在第一种情况中加上了左关联啊。为什么没有出来呢?
难道三个表同时左连接会出来数据丢失?请高手帮解答一下,谢谢!
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表中都有的
但我明明在第一种情况中加上了左关联啊。为什么没有出来呢?
难道三个表同时左连接会出来数据丢失?请高手帮解答一下,谢谢!
的,因为A与B左连接后,如果B无数据的话,大表B的字段为空,这时再用条件,这整条记录就被掉了。谢谢楼上的兄弟,我搞了半天,这个问题!