0

查询如下

select tbl1.x, tbl2.y
  from
tbl1, tbl2
  where tbl1.some_column (+) = tbl2.some_column
  AND tbl1.some_column2 (+) = 'Y'

让我困惑的是这部分

 AND tbl1.some_column2 (+) = 'Y'

这是什么意思??如果我删除(+)查询返回完全不同的行数。当 = 的两侧都有列名时,我确实了解 (+) 的应用,但是当 = 的一侧有字符串时(+)会做什么?

4

1 回答 1

7

这是 Oracle 在 LEFT OUTER JOIN(或者,在这种情况下,可能是 RIGHT OUTER JOIN)之前拥有的遗留语法。

不再需要在现代 Oracle 中使用它(至少从 9i 开始,甚至可能是 8i)。

现在您可以使用标准的 SQL 连接语法:

SELECT tbl1.x, tbl2.y
FROM tbl1 RIGHT OUTER JOIN tbl2 
ON ( tbl1.some_column = tbl2.some_column AND tbl1.some_column2 = 'Y')
于 2013-10-04T12:12:43.027 回答