任何人都可以解释下面代码中的(+)符号含义。
SELECT DISTINCT ph.po_nbr, rd.id
FROM po_head a, rtable_dtl e
WHERE a.org = e.org (+)
AND a.menu_nbr = e.menu_nbr(+)
AND UPPER(a.user_id) = UPPER(e.user_id(+))
答案 0 :(得分:4)
一个例子:
SELECT
t0.foo, t1.bar
FROM
FIRST_TABLE t0, SECOND_TABLE t1
WHERE
t0.ID (+) = t1.ID;
这是外部联接的Oracle特定表示法。这意味着它将包含来自t1的所有行,如果t0中没有相应的行,则在t0列中使用NULLS。
在标准SQL中,人们会写:
SELECT t0.foo, t1.bar
FROM FIRST_TABLE t0
RIGHT OUTER JOIN SECOND_TABLE t1;
Oracle recommends not to use those joins anymore if your version supports ANSI joins (LEFT/RIGHT JOIN):
Oracle建议您使用FROM子句OUTER JOIN语法而不是Oracle join运算符。使用Oracle连接运算符(+)的外连接查询受以下规则和限制[...]
的约束