【发布时间】:2012-09-09 20:57:04
【问题描述】:
这个查询:
select *
from table_a
, table_b
where table_a.id = table_b.id(+)
and table_b.name = 'BENEFICIARY'
没有返回任何记录。 table_b 没有 name='BENEFICIARY' 的记录。但是外连接应该返回 table_a 中的所有记录。不? 以下查询按预期从 table_a 返回记录:
select *
from table_a
, (select *
from table_b
where table_b.name = 'BENEFICIARY') AS table_b1
where table_a.id = table_b1.id(+)
为什么第一个查询没有返回记录?
【问题讨论】:
-
为什么是过时的语法?为什么不使用(符合ANSI!)“左/右连接”语法??????
-
如果你使用
(+)语法(我个人喜欢这种语法,因为 ANSI 语法很冗长),那么第 5 行应该是table_b.name(+) = 'BENEFICIARY。
标签: sql oracle11g inner-join outer-join