(+)登录sql代码

时间:2016-02-23 21:20:14

标签: sql oracle outer-join

任何人都可以解释下面代码中的(+)符号含义。

 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(+))

1 个答案:

答案 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连接运算符(+)的外连接查询受以下规则和限制[...]

的约束