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

Posted 一陌路人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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使用+简写左关联时,两个表的非关联条件若有(+),则最后的结果行数与主表相同,若两个表的非关联条件没有(+),则这些非关联条件会作用于关联后的结果,对关联后的结果再进行一次条件筛选,最后的结果行数<=主表

以上是关于oracle使用+简写左关联出现的结果集不一致问题的主要内容,如果未能解决你的问题,请参考以下文章

使用apache livy导致的结果集不一致问题记录

使用apache livy导致的结果集不一致问题记录

oracle左关联+号表示方式

Oracle 高级查询1 关联查询 分组查询

Oracle数据库,join多表关联方式union结果集合并

数据库Join查询:内联、左外联、右外联、取交集