查询如下
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'
这是什么意思?如果我删除(+),查询将返回完全不同的行数。当=的两侧都有列名时,我确实理解了(+)的应用,但是当<?> 在=?的一侧有一个字符串时,它是做什么的? / p>
答案 0 :(得分: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')