在 Oracle SQL 中,where 子句中的 (+) 运算符的目的是什么,而不是外连接?
What is the purpose of (+) operator in a where clause, other than outer joins, in Oracle SQL?
我有一些非常古老的 Oracle SQL 代码需要查看,如下所示,我试图了解 (+)
运算符在 where
子句之后的操作第一次使用
select *
from table_a a,
table b b
where
a.id = b.id (+)
and b.seq_nb (+) = 1
and b.type_cd (+) = 'DOLLR'
我认为 (+)
是一个外部连接等价物,所以
from table_a a,
table b b
where
a.id = b.id (+)
与
相同
from table a a left outer join table b b on a.id=b.id
那么你怎么能像下面这样对硬编码变量进行外部连接呢?
b.seq_nb (+) = 1
and b.type_cd (+) = 'DOLLR'
任何帮助将不胜感激,谢谢!
等于:
select *
from table_a a
left outer join table_b b
on a.id = b.id
and b.type_cd = 'DOLLR'
and b.seq_nb = 1
有时也称为“过滤外连接”。
它等同于一个派生的外连接table:
select *
from table_a a
left outer join (
select *
from table_b
where b.type_cd = 'DOLLR'
and b.seq_nb = 1
) b on a.id = b.id
我有一些非常古老的 Oracle SQL 代码需要查看,如下所示,我试图了解 (+)
运算符在 where
子句之后的操作第一次使用
select *
from table_a a,
table b b
where
a.id = b.id (+)
and b.seq_nb (+) = 1
and b.type_cd (+) = 'DOLLR'
我认为 (+)
是一个外部连接等价物,所以
from table_a a,
table b b
where
a.id = b.id (+)
与
相同from table a a left outer join table b b on a.id=b.id
那么你怎么能像下面这样对硬编码变量进行外部连接呢?
b.seq_nb (+) = 1
and b.type_cd (+) = 'DOLLR'
任何帮助将不胜感激,谢谢!
等于:
select *
from table_a a
left outer join table_b b
on a.id = b.id
and b.type_cd = 'DOLLR'
and b.seq_nb = 1
有时也称为“过滤外连接”。
它等同于一个派生的外连接table:
select *
from table_a a
left outer join (
select *
from table_b
where b.type_cd = 'DOLLR'
and b.seq_nb = 1
) b on a.id = b.id