Oracle SQL WHERE子句中的(+)符号意味着什么?

时间:2010-11-18 16:41:08

标签: sql oracle

  

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

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

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

(+)条款中的WHERE符号是什么?如果这是一个无知的新手问题,我很抱歉,但是在Google或StackOverflow上搜索非常非常 ...因为即使使用引号,搜索引擎也会看到“+”符号,似乎想把它当作某种逻辑指令。

1 个答案:

答案 0 :(得分:58)

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

的约束