是否存在结果集与以下两个语句不同的条件?
select * from a,b where a.id = b.id and b.name = 'XYZ'
select * from a,b where a.id =b.id(+) and b.name = 'XYZ'
我认为在这两种情况下,它都会将a和b中的公共行带到b.name = 'XYZ'
。所以a.id = b.id(+)
没有意义。
答案 0 :(得分:1)
不,没有条件,结果集会有所不同。
但你的假设“a.id = b.id(+)
没有意义”并非100%正确。 具有含义,因为它定义了连接,否则这将是a和b的笛卡尔积,其中所有行都来自a和b.name ='XYZ'。
(+)
没有效果,因为该语句在语义上是错误的。外部联接在id上但在名称上加入是没有意义的。
通常需要这样的东西:
select * from a,b where a.id =b.id(+) and b.name(+) = 'XYZ';
的简短示例