代码之家  ›  专栏  ›  技术社区  ›  Steve Perkins

在Oracle SQL WHERE子句中(+)符号意味着什么?[复制品]

  •  61
  • Steve Perkins  · 技术社区  · 15 年前

    可能重复:
    Oracle: What does (+) do in a WHERE clause?

    在Oracle数据库环境中考虑下面的简化SQL查询(尽管我不确定它是否特定于Oracle):

    SELECT 
       t0.foo, t1.bar
    FROM
       FIRST_TABLE t0, SECOND_TABLE t1
    WHERE
       t0.ID (+) = t1.ID;
    

    那是什么 (+) 中的符号 WHERE 条款?如果这是一个无知的新手问题,我很抱歉,但是 极其 很难在谷歌或StackOverflow上搜索…因为即使在使用引号时,搜索引擎也会看到一个“+”符号,并且似乎希望将其视为某种逻辑指令。

    1 回复  |  直到 12 年前
        1
  •  57
  •   Benoit    12 年前

    这是针对外部联接的Oracle特定表示法。这意味着它将包括T1中的所有行,如果t0中没有对应的行,则在t0列中使用nulls。

    在标准的SQL中,可以写下:

    SELECT t0.foo, t1.bar
      FROM FIRST_TABLE t0
     RIGHT OUTER JOIN SECOND_TABLE t1;
    

    甲骨文公司 recommends not to use those joins anymore if your version supports ANSI joins (LEFT/RIGHT JOIN) :

    Oracle建议您使用FROM子句外部联接语法,而不是Oracle联接运算符。使用ORACLE JOIN运算符(+)的外部联接查询受以下规则和限制的约束