oracle使用+简写左关联出现的结果集不一致问题

这是使用(+)的sql语句(已简写)

select a.id,b.num
from a,b
where a.id=b.id(+) and b.num>10

这是使用left join的sql语句

select a.id,b.num
from a
left join b
on(a.id=b.id and b.num>10)

两个sql的结果不一致,通过查找问题,更改使用+的sql

select a.id,b.num
from a,b
where a.id=b.id(+) and b.num(+)>10

更改后结果一致

结论:

oracle使用+简写左关联时,两个表的非关联条件若有(+),则最后的结果行数与主表相同,若两个表的非关联条件没有(+),则这些非关联条件会作用于关联后的结果,对关联后的结果再进行一次条件筛选,最后的结果行数<=主表

posted @ 2019-12-16 12:38  GuDongYu  阅读(635)  评论(0编辑  收藏  举报